BUUCTF-reverse-reverse2

本文通过IDA Pro分析了一款二进制程序,揭示了其中的Flag替换机制。通过对程序进行静态分析,找到了用于验证的Flag并解析了其内部的替换逻辑,最终确定正确的Flag为flag{hack1ng_fo1_fun}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用die 查壳和版本 64位 无壳

 拖进ida64位看一下

shift+F12查下字符串

 看到了一点flag 但不确定是否为全部的flag(因为左边的括号没有,但是根据句意猜测此处flag应该是全的)

双击点进去上面的“this is the right flag”  ctrl+x交叉引用进入引用它的代码段 F5查看伪代码 如图

 老规矩,从下往上看(思路和具体操作我已经在第一篇文章里面讲的比较详细了)

s2为输入的函数,如果输入的s2和flag相等,则输出“this is the right flag”  继续往上看

pid=fork()涉及到操作系统中子父进程的内容(以前做的时候我也没弄懂这段,最近在学操作系统再回来看竟然看懂了org 有人需要讲的话留言我会开单章讲一下)

红色框框内就是一个替换函数,从0到flag的长度-1(就是flag的长度的for循环次数) flag里面ASCII 值为105和114的字符会被替换成值为49的字符 选中105、114、49按R键查看ASCII码值对应的字符

 即为hacking_for_fun里面的“i”和“r”被替换成了“1”

所以flag{hack1ng_fo1_fun}

其实替换类的题目动态调试做会更简单一些,有需求的话评论留言出动态调试做法

 笔者在22-23年做过的题放在了该仓库,持续更新,需要自取GitHub - SlientRainyDay/Rain_CTF: CTF — 学习笔记&比赛题目&WP

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SlientRainDay

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值