0x00 run
拿到附件丢进IDA
F5反编译看一下主函数,送分题,主函数就一个输出语句
直接shift + f12查看字符串列表就可以看到flag
d2e7a88a21598ed442e4305138cb938.png
6133673de7ba9638104f95c8bfd2e4d.png

0x01 run2
送分题+1
丢进IDA反编译看下主函数
f6379564b13d2c513da63b498bf3388.png
代码的意思是输入”Hello!”就可以得到flag
如果输入的不是flag就不行
shift+f12查看字符串列表即可得到flag
0bde4736bef4eaaf8df7949b3133847.png

0x02 gdbme
看到题目名字,想到扔到linux里面用GBD调试
但是尝试了一下并没有什么收获,我太菜了,对GDB调试器的运用不太熟练
遇事不决IDA,直接丢进去反编译,主函数清晰可见
55b7f4147790a60fdd1b144eb34008b.png
找到关键函数点开分析
源代码的作用是将字符串中的每个字符的ascll码值与79进行比较
如果大于79,则减去47再返回
如果小于等于79,则加上47再返回
ad74f47bd03ec1942c28906c7fad19c.png
分析完源代码就开始编写解密脚本
菜狗编写的垃圾脚本如下,运行结果是flag中每个字符的ascll码值
按照ascll码表一一对应即可获得flag
87bb617a8f588a55561db29b1b5ea61.png

0x03 unpackme
题目附件给我们了一个python的源代码
我们先跑一遍,运行结果是让我们输入一个密码获取flag
打开源代码进行分析:
ba27a14bc690f75c878118eff08ce22.png
可以看出源代码的作用是对key_str进行base64加密,再用对称加密算法将payload加密并输出
然后我们可以看到最后的执行语句用了exec函数
**exec()**函数能够动态地执行复杂的python代码,功能十分强大。
因为exec函数是一个动态的执行命令,所以我们看到的运行结果是动态的,那么只要把执行语句换成静态的,就可以跳过验证密码的步骤。
我们就用最基础的print输出语句尝试一下:
b9ba2aeadef9807370ff421564354e6.png
(⊙o⊙)?flag找到了