如何将解题之路转化为一个?
摘要:写点新的题目 我打算更新下我得写题记录,因为有的前辈的wp不算特别完善,在这里尽我微薄之力,让后面写题的人能找到题目解法(希望如此) 当然我写的也不一定特别的好,希望大家多多包涵。大部分题目来自于nssctf。 [LitCTF 2023]d
写点新的题目
我打算更新下我得写题记录,因为有的前辈的wp不算特别完善,在这里尽我微薄之力,让后面写题的人能找到题目解法(希望如此)
当然我写的也不一定特别的好,希望大家多多包涵。大部分题目来自于nssctf。
[LitCTF 2023]debase64
好吧,其实做这一道题目的想法已经完全跑偏了。
首先,点开main函数,能够看到很重要的数据
在这里的话,里面有正数有负数,所以,把负数补成正的。
负数转正数方法:
unsigned = signed + 65536
转换:
v8
-11618 + 65536 = 53918
v9
-19854 + 65536 = 45682
v10
-32589 + 65536 = 32947
v11
-144 + 65536 = 65392
接着转成16进制,看hex编码
46
18ED
5696
D2BE
B2B2
8003
FF70
0000
然后拆字节端序处理
46 ED 18 96 56 9E D2 72 B2 B3 80 03 FF 70
然后把这个字节换成二进制再换成十进制
然后
点进去
再点击byte,能看到base64编码
BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
把上述转化成十进制的对应找出来
是Ru0Y + llae + 0nKy + s4Bw,
但是端序顺序有问题,所以我们改一下
Y0uReallyKn0wB4s,还差一位,找出来这一位直接补三个=就行了,然后用它给的MD5进行爆破
借用大佬的代码import hashlib
en_flag = 'Y0uReallyKn0wB4s'
for i in string.printable:
end = en_flag + i + '='
if hashlib.md5(end.encode()).hexdigest() == '5a3ebb487ad0046e52db00570339aace':
print(end)
exit()
答案出来了Y0uReallyKn0wB4s3===
