buuctf 逆向刷题01——reverse1

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

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

 双击,定位地址。

 

继续双击定位地址。

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

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

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

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

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

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

 查看上面的if:

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

得到flag{hell0_w0rld}

总结:

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

以及分析流程图。

参考资料:

http://t.csdn.cn/Ys0PZ

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值