孩子可太想升个级了,放一些之前写的一些buuctf逆向题目的总结
easyre
首先查一下壳以及其他相关信息
可以看到是 64 位程序,没壳,那就可以直接用IDA打开了
IDA一键F5
真·easyre
reverse1
拿到题目,继续查壳,看信息
64位程序,没壳
IDA打开后找主函数逻辑,然后.....点了半天没找到
直接shift+F12 查看字符串
可以发现这里有一个关键字符串
this is the right flag!
点进去,x查看交叉引用便可以找到主函数
可以看到的是在这个字符串上面有个 strcpy 对比,其中一个是我们输入的字符串,而另一个不出意外就是flag了,点进去看看
加上 flag 前缀后我们直接提交,但很难受的就是可以发现flag是错误的。
我们继续去分析他的主函数
在上面我们可以看到他对 flag 做了与一个操作
for ( j = 0; ; ++j )
{
v8 = j;
v2 = j_strlen(Str2);
if ( v8 > v2 )
break;
if ( Str2[j] == 111 )
Str2[j] = 48;
}
注意他的第二个 if 判断,按 r 我们把 ascll 码变成字符,可以发现他是把字符串中的所有的 “o” 变成了 “0”
然后就不用我多说了吧,提交flag就行
reverse2
查壳
64位程序,无壳
用IDA打开程序,分析主函数
可以看到程序是将我们输入的数据与flag做对比,并且在对比之前将flag中的r和i字符换成了1
剩下的就不用多说了吧,记得flag的格式“flag{}”
当然,比对类的题目可以直接用动态调试来查看存储在程序中的字符串是什么
ELF文件,用gdb打开,在第一个输入点处ctrl+c断下来,单步随便输入一串字符串后就可以在strcmp处下断了(在输入后最好单步再走几步,将输入的函数先执行完成)
再用continue运行,就能直接看strcmp函数中的参数了,如下图
内涵的软件
查看程序基本信息
32位程序,没有加壳
选择IDA32打开查看主要函数
很明显答案已经摆出来了,结合题目要求“注意:得到的 flag 请包上 flag{} 提交”换一下flag格式就可以了
新年快乐
查看程序基本信息
32位程序,可以很惊奇的发现终于带壳了
掏出x32dbg开始手脱
UPX的壳一般会有pushad和popad
打开后一路F9找pushad,找到后F8运行一步,再在栈顶下硬件访问断点(也可以单步,找大跳转就行,单步的过程
支付2UD,阅读全文
还有更多的精彩内容,作者设置为付费后可见