Pwn_工具食用方法(动态更新)

Tools食用方法

IDA

空格可以调整视图

F5进行一键反汇编

双击变量可以看到变量地址或进入函数

Ctrl+S 可以看到区段地址(如bss段、plt、got)

对变量或函数按x可以查看上级调用

可以在函数框Ctrl+F搜索函数名

在变量右键可以Rename变量名,方便代码审计

gdb

  • gdb 程序名 打开程序

  • pdisass/disassemble 反汇编

​ 查看当前函数帧的反汇编代码,前者依赖于pwndbg有高亮,后者没有。

​ 如: pdisass main

​ disass

  • -q 参数不显示欢迎信息等

  • canary 查看canary的值

  • -n 不加载任何插件,使用原生gdb

  • info +想看的信息,例如 info functions 查看函数信息

  • b/breakpoint 设置断点

​ 如 b *内存地址

​ 如 b main

​ 在无PIE模式下,* 16位地址 即可

​ 在PIE下, *$rebase(16位地址)

  • del/delete breakposints n,删除断点

​ n是 断点编号,可用info breakpoints 查看断点信息

  • start 命令启动程序并停在开辟完主函数栈帧的地方

  • c/continue 继续执行程序,遇到断点停下

  • f/finish 结束程序

  • r/run 运行程序,遇到断点停下

  • ni 单步步过

​ 一步一步执行指令,遇到函数调用时直接执行完整个函数

  • si 单步步入

​ 一步一步执行指令,遇到函数调用时跳转到函数内部

  • vmmap 查看内存映射

    可以看到各段的权限

  • checksec 查看程序防护措施

  • p/print 打印信息

​ 如寄存器 p $ebp

  • set 设置某个地址的值

​ *addr=value

  • x/<n/f/u> <地址> 查看某地址的值

​ n/f/u 参数为可选,

​ n:查看多少个内存单元,即从当前地址开始计算,每个内存单元的大小由后面的u指定。

​ f:显示格式,如s代表字符串,i代表指令形式,u代表内存单元大小,b(1字节) h(双字节) w(4字节,默认),g(8字节)。后缀w代表16进制形式查看变量

​ 例如: x/s 地址

​ 查看某地址的字符串值

  • stack value 查看value大小的栈值
  • cyclic value: 生成value个垃圾字符,可以用来帮助测栈溢出大小
  • cyclic -l 地址 查询偏移,返回值就是覆盖(溢出)点

LibcSearcher

根据得到的泄露地址来查找libc版本,也可以在如下网址手动搜索

https://libc.blukat.me

安装方法:

git clone https://github.com/lieanu/LibcSearcher.git

cd LibsSearcher

python setup.py develop

当遇到返回多个Libc版本库的时候,可以通过add)condition(leaked_func,leaked_address)来添加限制条件。也可以手工选择其中一个版本。

Vim

通过vim xxx.py来创建文件

通过 i进入插入模式

esc返回指令模式

:wq 保存并退出

Pwntools

(我并分不清pwntools和python基础语法,故在脚本中能利用的都放在这里)

  • 在脚本中gdb交互: gdb.attach(进程名,'命令')

frtstr_payload

针对格式化字符串漏洞的工具

fmtstr_payload(offset, writes, numbwritten=0, write_size='byte')
第一个参数表示格式化字符串的偏移;
第二个参数表示需要利用%n写入的数据,采用字典形式,我们要将printf的GOT数据改为system函数地址,就写成{printfGOT: systemAddress};本题是将0804a048处改为0x2223322
第三个参数表示已经输出的字符个数,这里没有,为0,采用默认值即可;
第四个参数表示写入方式,是按字节(byte)、按双字节(short)还是按四字节(int),对应着hhn、hn和n,默认值是byte,即按hhn写。
fmtstr_payload函数返回的就是payload

Ropgadget

  • 查找bin_sh字符串地址:ROPgadget --binary ./re2libc3 --string"/bin/sh"

  • ROPgadget--binary ./re2libc3 --only"pop|ret"

  • ROPgadget--binary ./re2libc3 --only"pop|ret"|grep"eax"

  • ROPgadget--binary ./re2libc3 --only"pop|ret"|grep"ebx"|grep"ecx"|grep"edx"

  • ROPgadget--binary ./re2libc3 --string"/bin/sh"

posted @ 2022-04-29 17:48  L1ngYi  阅读(126)  评论(0编辑  收藏  举报