ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-29 18:03:22  阅读:263  来源: 互联网

标签:食用方法 函数 查看 -- 地址 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"

标签:食用方法,函数,查看,--,地址,Pwn,动态,断点,字节
来源: https://www.cnblogs.com/Uninstalllingyi/p/16207571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有