动调脚本化 -- ida_python

从一个reverse-box到python脚本化调试

攻防世界 reverse-box 题目

原题来自 mma-ctf-2nd-2016: reverse-box

题目分析

题目条件

Description:

$ ./reverse_box ${FLAG}

95eeaf95ef94234999582f722f492f72b19a7aaf72e6e776b57aee722fe77ab5ad9aaeb156729676ae7a236d99b1df4a

题目flag格式:TWCTF{…}

分析

main函数如下:

运行程序时输入的参数,会和一个数值相加,转化成十六进制,然后打印出来,

我们简单运行下如下:

另外汇编是:

这个位置,是一个查表的过程,函数sub_804858D是一个建立表的过程,

重点在于:


后部分都是设置建立表,但是这个生成表的种子是随机的,也就是我们的表是不固定的。

思路

题目就是对输入进行查表,然后打印出来,并且给出了正确flag查表对应的值,但是这个表是随机生成的,我们需要得到正确的一个表。

方案应该是只能爆破,并且rand()函数调用的返回值,限制为int8即0xff大小,最大为0xff,爆破次数不算太大,直接爆破出来正确的表,就结束了。

这时候我们面对一个问题,这个怎么方便的进行爆破?

下面我们写一下关于爆破的方法,

其中wp有的直接爆破出正确的,有的直接爆破出所有的再交python得到最后工作,这都是差不多的, 我们只讨论爆破的实现。

下面是我搜到一些wp中的解法:

其中大部分方法都可以看到链接。一个ida python的手段是我们的重点, 也恰好是在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值