0x00 one_gadget
1. 介绍
onegadget 是一个可以在给定的 libc 库中,找能够直接完成 getshell 功能的 gadget 入口地址的工具,不过在使用这些 gadget 之前依旧需要满足某些条件。
使用 onegadget 的优点是不需要设置 “/bin/sh” 字符串参数,不过使用 onegadget 需要知道 libc 版本(没给 libc 的情况下,可以尝试猜测 )
2. 参数
-n:找最靠近某个函数的 gadge
-l:指定搜索级别,显示更多的one gadget
-b:BuildID[sha1],直接搜索某个 libc 的 onegadget,不用下载对应 libc
3. 使用
0x01 libcSearcher
1. 介绍
libcSearcher 是一个可以通过泄露地址计算 libc 基址,并寻找指定函数在内存中真实地址的工具;libc database search 的功能和 libcSearch 类似,不过其是网页版的,无法写成自动化脚本,不过其比 libcSearcher 准确
2. 使用
from LibcSearcher import* ## 导入 LibcSearcher 库
obj = LibcSearcher("fgets", 0x7ff39014bd90) ## 初始化类
obj.add_condition(("fgets", 0x7ff39014bd90) ## 添加条件
obj.dump("fgets") ## 泄露 fgets 函数真实地址
## 计算基址:
libc_base = puts_addr - libc.dump('puts')
## 通过基址计算 system 和 ("/bin/sh"):
system_addr = libc_base + libc.dump('system')
binsh_addr = libc_base + libc.dump('str_bin_sh')
0x02 ROPgadget 使用
--binary 指定文件名
--only 筛选某种格式的 gadget
--string 搜索字符串偏移,ELF 文件中明文字符串
--depth num rop chain 深度