buuctf 逆向刷题01——reverse1

(还没下DIE就没检查有没有壳,直接拖到IDA里打开了)

按shift+f12查看字符串,果然看到"flag"字样

buuctf 逆向刷题01——reverse1_第1张图片

 双击,定位地址。

 

继续双击定位地址。

出现流程图。(其实我事后可以直接分析这个流程图了,因为这个流程图也不复杂,就是两个if)

按F5查看伪C代码。分析:

buuctf 逆向刷题01——reverse1_第2张图片

 猜测sub_140011D1应该是printf(),那么sub_14001128F应该是scanf()。返回流程图可以看到str2是{hello_world}:

buuctf 逆向刷题01——reverse1_第3张图片

或者任意双击一个”str2“可以找到,str2的结果。

分析if判断条件,!()为1输出right,那么()应为0,()为0的条件:

strncmp(str1,str2,v3)是把str1与str2两字符串的前v3位数做一个比较,若str1=str2,返回0;大于返回正数,小于返回负数

 查看上面的if:

buuctf 逆向刷题01——reverse1_第4张图片

 这个for循环是将ASCII值做了处理。在IDA中,选中数字按"R"键可以将数字转换为字符。

buuctf 逆向刷题01——reverse1_第5张图片

得到flag{hell0_w0rld}

总结:

本题考查了IDA的基本操作:①查看字符串;②按F5将编码转换成伪C代码;③IDA中按住"R"键将ASCII码转为字符。

以及分析流程图。

参考资料:

http://t.csdn.cn/Ys0PZ

 

你可能感兴趣的:(buu刷题,安全)