【buuctf】reverse1

下载后看一下有没有壳

无壳64位

用ida打开

简单的题目会有flag或者敏感数据字符等信息,方便我们定位函数查看字符串的方法为shift+F12

ctar+x找一下位置

F5转换成c语言

从下往上分析

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

if(!strncmp(str1,str2,v3))是一个判断语句,if()括号里面的内容如果为真,则输出

"this is the right flag",这时我们只需要知道什么情况为真。

然后看括号里面的内容 !( strncmp(str1,str2,v3) )为真的情况

!为非,所以只要( strncmp(str1,str2,v3) )为0, !( strncmp(str1,str2,v3) )即为真;为0的情况已经在上面对strncmp函数的讲解说过了,str1,str2两个字符串相等返回值即为0

sub_1400111D1是print函数,不难猜测sub_14001128F是scanf函数,所以字符串str1为我们输入的内容。接下来看字符串str2.

试了一下并不是答案,接着分析

 for循环是对str2做了一个转换的处理,str2里面ascii码为111的字符会被转换为ascii码为48的字符,在IDA中,选中数字按"R"键可以将数字转换为字符。

、str2中的o都为0

那么根据的str2的内容将o该为0

所以flag为 flag{hell0_w0rld}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值