首页 > 其他分享 >工具的使用

工具的使用

时间:2022-10-17 12:57:27浏览次数:47  
标签:查看 libc got read sh 使用 格式 工具

PWN工具的使用

0x1.ida

指令 用法
h 将数据进行10进制和16进制转换
r 将数据进行字符和数字的转换
n 对变量和函数等进行重命名
x 查看函数的引用
y 修改数据的类型
shift+e 查看一些数据
tab 汇编和c语言之间转换

0x2.gdb

指令 用法
si 单步执行(进入)
ni 单步执行(不进入)
finish 直接运行到函数的结束
watch 监控一个内存的值(值如果改变,就会断点)
b 断点
info b 查看断点
x 查看内存数据(一般不单独用)
命令格式如下:
x /nfu addr

n表示一个正整数,f是查看的格式,u表示几个字节(默认4字节)

参数 f 的可选值:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。

参数 u 的可选值:
b 表示单字节
h 表示双字节
w 表示四字节
g 表示八字节
del 删除断点
info r 查看寄存器的值
vmmap 查看虚拟内存的布局
search 找一个字符串
p 查看内存数据
stack 查看栈里的数据
bt 查看栈里函数调用
heap 查看堆
bins 查看管理堆链表

0x3.ROPgadgets

指令
使用格式: ROPgadget --binary filename
查找字符串: ROPgadget --binary filename --string stringname

0x4.one_gadget

使用格式 one_gadget filename

0x5.pwntools

shellcode asm(shellcraft.amd64.linux.sh(),arch="amd64") 32位是i386
LibcSearcher libc = LibcSearcher("read", read)
libc_base = read - libc.dump("read")
bin_sh = libc_base + libc.dump("str_bin_sh")
ELF(“libc_name") libc = ELF("libc_name")
libc_base = read - libc.sym["read"]
bin_sh = libc_base + libc.searcher("/bin/sh") 也可以查找程序内字符串
debug context(log_level="debug",os="linux",arch="amd64")
gdb gdb.attach(sh,"b *addr")
gdb.attach(sh)
泄露got表 payload = u32(elf.got["puts"] )+ '%6$s'
修改got表 payload = fmtstr_payload(6,{elf.got["printf"]:system_addr})
6为相对printf的偏移量,将printf的got表的地址修改为system的地址

标签:查看,libc,got,read,sh,使用,格式,工具
From: https://www.cnblogs.com/Starry-blog/p/16798820.html

相关文章