首页
社区
课程
招聘
[原创] 自动化获取覆盖地址偏移的工具getOverFlowOffset
发表于: 2019-1-6 23:09 5651

[原创] 自动化获取覆盖地址偏移的工具getOverFlowOffset

2019-1-6 23:09
5651

工具位于getOverFlowOffset

  • 从前,你想要获取输入函数的地址与EBP的偏移,你得:

    • 1.找到具有漏洞的函数,gets等
    • 2.在IDA或者gdb中,在调用了漏洞函数的函数中设置返回地址的断点
    • 3.利用工具产生测量偏移的输入字符串,比如工具patternLocOffset.py
    • 4.带着测量的输入运行目标程序.
      • 4.1如果你的IDA运行在host上,目标程序运行在guest上,你还得拷贝linux_server到对应程序的目录下
      • 4.2在host中运行IDA
      • 4.3切换到guest中,拷贝测量字符串,到linux_server运行的窗口中,
      • 4.4切换到host中,查看EBP的数值
    • 5.利用patternLocOffset测量偏移的结果
  • 但是现在,你只需要

    • 1.找到调用漏洞函数的函数的返回地址,并把它给getOverFlowOffset
    • 2.Boom! 你就可以得到你想要的了:)
  • Requirements

    • gdb
    • patternLocOffset.py
    • pygdbmi
      • pip install pygdbmi
  • Usage

    [+] Usage: python getOverFlowOffset.py [vul_ret_address] [vul_program]
    [+] Hints: you give me vul_ret_address, I give you the offset :)
    [*] Example: python getOverFlowOffset.py 0x080484BD example_bin/xdctf
    
  • The example in example/bin
$ python getOverFlowOffset.py 0x080484BD example_bin/xdctf15-pwn200
[+] Found offset to the EBP is 108.
[+] THe offset to the RET_ADDR is 112 (32bits) or 116 (64bits).

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 26588
活跃值: (63242)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-1-7 09:20
0
雪    币: 6283
活跃值: (2036)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
3
Editor 感谢分享!
谢谢支持
2019-1-8 00:37
0
雪    币: 14494
活跃值: (17473)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
请问楼主,你发的这个工具和之前在论坛里找到的patternLocOffset.py和shell_extractor.py两个工具是不是功能差不多的??(这两个工具是用来计算从溢出到返回位置的字节数的)
2019-1-11 10:28
0
雪    币: 6283
活跃值: (2036)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
5
pureGavin 请问楼主,你发的这个工具和之前在论坛里找到的patternLocOffset.py和shell_extractor.py两个工具是不是功能差不多的??(这两个工具是用来计算从溢出到返回位置的字节数的)
首先感谢你的回复。 1. patternLocOffset.py 提供了生成溢出覆盖测试的字符串。并且根据字符串在EBP的覆盖值,提供了偏移的计算。 我的这个工具基于这个字符串生成工具,简化了步骤。 原来你利用这个工具,还需要在目标程序里面下断点,运行patternLocOffset.py生成字符串,运行程序读入字符串,查看EBP,再把EBP的值放到patternLocOffset.py里面计算才能够得到。现在,你仅需要告诉我断点的地址就好了。 (时间就是生命,能节约就节约)2. shell_extractor.py 这个工具类似于pwntools里面的asm(""),就是从编译成可执行层序的shellcode程序里面,提取出符合特定格式的shellcode 形式。 3. shell_extractor.py也在我的github里面,是我之前自己开发的简单工具。后来发现了pwntools之后,这个工具其实就不那么实用了。
2019-1-11 10:35
0
雪    币: 14494
活跃值: (17473)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
6
二当家a 首先感谢你的回复。 1. patternLocOffset.py 提供了生成溢出覆盖测试的字符串。并且根据字符串在EBP的覆盖值,提供了偏移的计算。 我的这个工具基于这个字符串生成工具,简化了步骤。 ...
楼主,GitHub里是你的源代码是不??CV下来就可以用了吧??
2019-1-11 10:45
0
雪    币: 6283
活跃值: (2036)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
7
pureGavin 楼主,GitHub里是你的源代码是不??CV下来就可以用了吧??
是的。直接pull 项目shellcode_tools就可以。 getOverFlowOffset.py这个工具有一些依赖,看Requirements,对应安装了就可以。
2019-1-11 10:59
0
雪    币: 2714
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
多学分享。
2019-1-23 18:51
0
游客
登录 | 注册 方可回帖
返回
//