PicoCTF Re
0x00 run
拿到附件丢进IDA
F5反编译看一下主函数,送分题,主函数就一个输出语句
直接shift + f12查看字符串列表就可以看到flag
0x01 run2
送分题+1
丢进IDA反编译看下主函数
代码的意思是输入”Hello!”就可以得到flag
如果输入的不是flag就不行
shift+f12查看字符串列表即可得到flag
0x02 gdbme
看到题目名字,想到扔到linux里面用GBD调试
但是尝试了一下并没有什么收获,我太菜了,对GDB调试器的运用不太熟练
遇事不决IDA,直接丢进去反编译,主函数清晰可见
找到关键函数点开分析
源代码的作用是将字符串中的每个字符的ascll码值与79进行比较
如果大于79,则减去47再返回
如果小于等于79,则加上47再返回
分析完源代码就开始编写解密脚本
菜狗编写的垃圾脚本如下,运行结果是flag中每个字符的ascll码值
按照ascll码表一一对应即可获得flag
0x03 unpackme
题目附件给我们了一个python的源代码
我们先跑一遍,运行结果是让我们输入一个密码获取flag
打开源代码进行分析:
可以看出源代码的作用是对key_str进行base64加密,再用对称加密算法将payload加密并输出
然后我们可以看到最后的执行语句用了exec函数
**exec()**函数能够动态地执行复杂的python代码,功能十分强大。
因为exec函数是一个动态的执行命令,所以我们看到的运行结果是动态的,那么只要把执行语句换成静态的,就可以跳过验证密码的步骤。
我们就用最基础的print输出语句尝试一下:
(⊙o⊙)?flag找到了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 M1nG's BLOG!