-
-
[原创]Bugku-杰瑞的下午茶
-
发表于:
2022-3-10 20:57
7199
-
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]))
|
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-3-26 14:04
被愿风载尘编辑
,原因: