烦死了的配置
pwntools很好配置这里就没写了
所有的配置使用的都是python3.6版本
除非有特别说明
【工具使用的小例子】buu-pwn-ciscn_2019_ne_5:
# src和addblog里面因为空间足够大都不会溢出
# 而且有保护限制128字节没法溢出
# 但是咋GetFlag函数中复制数据的时候dest函数会溢出因为他只有0x48个字节
# 而来自src的字符串有上百个字节最多可以在addblog的时候存入
# ROPgadget --binary rop --string "sh"
必看环境变量
- liunx===kali
- win===win10
如果在git的时候速度很慢请开全局vpn,直接去对应连接下载压缩包然后安装
asm依赖库安装
kali
用于pwn模块的shellcode生成依赖库
git clone https://github.com/Gallopsled/pwntools-binutils
添加下载目录中的install_all.sh文件的777权限chmod 777 [filepath]
然后执行这个文件install_all.sh
ropgaget安装
kali
sudo apt-get install python-capstone
git clone https://github.com/JonathanSalwan/ROPgadget.git
使用python解释器执行sudo python3 setup.py(777权限)
然后运行ROPgadget指令会显示缺少(会有一个at后面的地址是要复制过去的地址)scripts下的文件,解决办法如下
# 在下载的ROPgadget文件夹中有一个scripts文件把他复制过去
sudo cp -r [downloaded_scripts_path] [tipedlack_scripts_path]
# 修改对应的文件的可执行权限
sudo chmod 777 [tipedlack_scripts_path]
然后再次运行ROPgadget即可
附录,基本使用指令
# 查找可存储寄存器的代码
ROPgadget --binary [filepath] --only 'pop|ret' | grep 'rdi'
# 查找字符串
ROPgadget --binary [filepath] --string "/bin/sh"
ROPgadget --binary [filepath] --string "sh"
# 查找有int 0x80的地址
ROPgadget --binary [filepath] --only 'int'
onegadget安装【unchecked】
sudo apt -y install ruby
sudo gem install one_gadget
gdb
切换插件
想用 peda:
echo "source ~/GDB-Plugins/peda/peda.py" > ~/.gdbinit
想用 peda-heap:
echo "source ~/GDB-Plugins/peda-heap/peda.py" > ~/.gdbinit
想用 gef:
echo "source ~/GDB-Plugins/gef/gef.py" > ~/.gdbinit
想用 pwndbg:
echo "source ~/GDB-Plugins/pwndbg/gdbinit.py" > ~/.gdbinit
用gdb查看内存
格式: x /nfu <addr>
说明
x 是 examine 的缩写
n表示要显示的内存单元的个数
f表示显示方式, 可取如下值
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节