Bugku-杰瑞的下午茶
Bugku-杰瑞的下午茶先运行测试一下程序,发现还是要求出flag,所以开始分析程序,先查壳,因为用ida分析我并没有像往常一样成功,所以还是用od动调https://img-blog.csdnimg.cn/1000a5ebf3d949c7a4cb0c2b8ed8e982.png
经过刚才运行程序发现,有一串字符,所以首先尝试od搜索字符串定位到那个地方
https://img-blog.csdnimg.cn/5b670dffc8b5479ca318019f49ae1d9e.png
找到了程序开始的地方,从这里开始单步调试输入我们的测试字符串123456789
https://img-blog.csdnimg.cn/20d9d04a3f4e46148f9fc39ca0bdd398.png
继续向下运行将参数61,62压入栈,但并不知道有什么用,进入下面这个函数看一看
https://img-blog.csdnimg.cn/db9a9f00ed0a4e4db5a60444f7ebe47b.png
有一些操作,但并没有看出来是什么意思
https://img-blog.csdnimg.cn/302dfef8a3e34626a9cc48910a962949.png
跳过这个函数继续分析,数据窗口跟随,发现我们输入的字符串传入了下一个函数
https://img-blog.csdnimg.cn/9cf9199c2ab64e40b964b333afa24683.png
继续向下分析,再进入下一个函数分析时发现,里面调用了我们输入的字符串并且还调用了一个函数,继续跟进去看看
https://img-blog.csdnimg.cn/2b71dd047e51419388a88afa2e7faaee.png
跟进去发现了以下操作,将输入的内容与3异或
https://img-blog.csdnimg.cn/dff01831e52c422eb63e9ce4ac8a7f7b.png
加密后的数据
https://img-blog.csdnimg.cn/af8ee9eabe694babbfd4eb96a209fe6f.png
在继续向下分析时,发现进行了一些操作,但并没有影响我们的输入或是加密后的数据跳过那些函数,发现一个特殊的字符串和我们加密后的数据
https://img-blog.csdnimg.cn/97157a4c113d4de1b012832f17d90e16.png
进入这个函数,会发现进行了一些处理,就是将加密后的输入字符串和那一串特殊字符进行比较
https://img-blog.csdnimg.cn/cc578fbe6c684f2996ca694cab464db5.png
当je跳转实现时,就会输出success
https://img-blog.csdnimg.cn/2a678dbecf684869b1f12e4c9b76c4ba.png
这个函数结束后直接就是判断输出成功还是失败,所以就可以推断出是输入的字符串与3异或然后那一串特殊字符进行比较,相同则输出成功,可以根据这个写脚本了
https://img-blog.csdnimg.cn/761725168be54d4791703615ce921db1.png
脚本:
x =
for i in range(0, 20):
x = x ^ 3
print(chr(x)) moshuiNW 发表于 2021-11-21 15:17
请问 x 是怎么得出来的,能不能讲下,我没怎么看懂
经过前面一个函数的处理将12345678加密了,然后在00401921上方处将加密后的数据和一个特殊字符串压入栈,然后用call函数进行比较,如果相同则je跳转,如果je跳转则会输出success,所以那个特殊字符串异或三后就可以得出flag了 moshuiNW 发表于 2021-11-21 15:17
请问 x 是怎么得出来的,能不能讲下,我没怎么看懂
数据窗口中跟随 立即数? 我来喝茶了 看看茶怎么样 请问 x 是怎么得出来的,能不能讲下,我没怎么看懂 moshuiNW 发表于 2021-11-21 15:23
数据窗口中跟随 立即数?
对的,可以直接找到 骑着驴子追宝马 发表于 2021-11-21 15:33
对的,可以直接找到
嗯,发现了XD 请问能不能直接在OD里调标志位让je不跳转会不会看到falg? 请问x是怎么发现的,没搞明白 学习一下!虽然看不懂
页:
[1]
2