-
-
[原创]Bugku-杰瑞的下午茶
-
发表于:
2022-3-10 20:57
6943
-
Bugku-杰瑞的下午茶
先运行测试一下程序,发现还是要求出flag,所以开始分析程序,先查壳,因为用ida分析我并没有像往常一样成功,所以还是用od动调
经过刚才运行程序发现,有一串字符,所以首先尝试od搜索字符串定位到那个地方
找到了程序开始的地方,从这里开始单步调试
输入我们的测试字符串123456789
继续向下运行将参数61,62压入栈,但并不知道有什么用,进入下面这个函数看一看
有一些操作,但并没有看出来是什么意思
跳过这个函数继续分析,数据窗口跟随,发现我们输入的字符串传入了下一个函数
继续向下分析,再进入下一个函数分析时发现,里面调用了我们输入的字符串并且还调用了一个函数,继续跟进去看看
跟进去发现了以下操作,将输入的内容与3异或
加密后的数据
在继续向下分析时,发现进行了一些操作,但并没有影响我们的输入或是加密后的数据
跳过那些函数,发现一个特殊的字符串和我们加密后的数据
进入这个函数,会发现进行了一些处理,就是将加密后的输入字符串和那一串特殊字符进行比较
当je跳转实现时,就会输出success
这个函数结束后直接就是判断输出成功还是失败,所以就可以推断出是输入的字符串与3异或然后那一串特殊字符进行比较,相同则输出成功,可以根据这个写脚本了
脚本:
1 2 3 4 | x = [ 0x65 , 0x6F , 0x62 , 0x64 , 0x78 , 0x77 , 0x6C , 0x67 , 0x62 , 0x7A , 0x7A , 0x5C , 0x6A , 0x70 , 0x5C , 0x64 , 0x6C , 0x67 , 0x7E , 0x00 ]
for i in range ( 0 , 20 ):
x[i] = x[i] ^ 3
print ( chr (x[i]))
|
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-3-26 14:04
被愿风载尘编辑
,原因: