【逆向 | CTF】reverse1

解题要点

【题目来源】BUUCTF

【解题思路】

    -检查壳和多少位程序

    -扔进IDA进行代码分析

    -找到flag在变量里

    -根据程序改改flag即可

【难点】

    -IDA的使用,寻找变量

    -C语言函数的掌握熟悉程度

步骤一:查壳查位,扔进IDA分析

先使用查壳工具检测出是64位程序

二话不说扔进IDA分析,按F12后能显示出检测到的字符串列表,ctrl+F搜索出flag所在的位置

步骤二:伪代码分析

双击点进去后,找到对应字符串,发现两个调用的函数,好像都是同一个函数(点进去都是一样的)

点进去后仔细观察就能发现,这两个东西有点像flag{}

输入进去后闪退,也不知道对不对

那就按F5,生成伪代码,进行手动分析吧

研究了一下发现伪代码不是浪得虚名,简直是乱来的

连标准函数的名字也能是有误差的

代码分析也不太难

就是把str2这个变量的其中一个或几个的ascii码是111改为48,那查一下对应的字符就是把o改成了0

然后下面的strncmp函数是有点难理解,特别是多了个!号

先看strncmp函数,作用是比较两个字符串,如果相等就返回0,不相等就返回正数负数

那如果相等就不触发if,所以要加个!

然后逻辑变成了相等则触发if

看了看下面那函数好像只是打印这段话出来,没啥意义

毕竟填flag在网站上

所以寻找怎么触发if就可以了

步骤三:寻找对应ascii码的字符

根据上面的理解,只需要str1和str2是一样的就可以触发if

之前的反汇编窗口已经看到了str2变量字符是{hello_world}

根据算法改一下那就是{hell0_w0rld},把o改为0就可以了

填了flag,搞掂

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星盾网安

能花钱买到的知识,都不贵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值