在buuctf上刷题时发现没有详细的习题讲解,虽然本人现在还是一个在校学生,学习逆向的时间也不足一年,属于小白一个。希望在座的大佬在评论区进行讲解和补充。本人较笨,有很多不懂的东西,希望各位多多包涵,大家一起学习。
easyre
首先进行查壳。这里用的是 exeinfo pe 软件进行的查壳。
这里是.text无壳 64位。
用ida 64 位进行静态分析。这题很简单,按shift+f12查看字符串就可以找到其flag。
flag已将找到 flag{this_Is_a_EaSyRe}
reverse1
查壳
无壳 64位。
用ida 64 位进行静态分析。
按f5进行反汇编。看到main函数双击追踪。
分析代码。
if ( !strncmp(&Str1, Str2, v3) )
这一行代码将输入的flag与str2作比较,如果相等则输出“this is the right flag!”
双击Str2 进入。
Str2 为 hello_world
这是将hello_world当作flag进行提交,发现是错的。for循环是对str2做了一个转换的处理,str2里面ascii码为111的字符会被转换为ascii码为48的字符,在IDA中,选中数字按"R"键可以将数字转换为字符
所以正确的flag应该为{hell0_w0rld}
reverse2
还是查壳,无壳 64位。
ida 打开。就看到了fiag,双击进去,查看。
一看就发现了hacking_for_fun,结果一提交就发现自己提交的是错的。
在重新看一遍,发现下面还对flag的操作。
按f5进行反汇编查看源代码。
可发现flag内容发生了替换,就是把ASCII码等于105和114的替换成ASCII码49。
可以写个python脚本进行替换。
跑过后,发现flag发生了更改。flag{hack1ng_fo1_fun}这就是正确的flag。
新年快乐
查壳,发现有壳。
用 upx 进行脱壳。
在将其拖入ida。
按f5 进行反汇编,查看源代码。
找到关键函数双击进去。
看到flag,flag{HappyNewYear!}