工具和环境
工具安装
1.pwntools
python库,pip安装
2.checksec
pwn自带,也可自己安装。
PWN-最新checksec的安装和使用 – 作者: GitCloud
3.gdb-peda
4.python2安装pip
5.Ubuntu安装32位库
sudo apt-get install lib32z1
sudo apt-get install gcc-multilib
6.ROPgadgets
https://github.com/JonathanSalwan/ROPgadget
python setup.py install
可能出现错误:ImportError: No module named ‘setuptools’
sudo apt-get install python-setuptools
添加环境变量:
vim ~/.bashrc
export PATH=$PATH:/home/lcy/Install/ROPgadget-master
把ROPgadgets的安装目录添加到.bashrc
shell命令:
1. objdump
-t: 显示文件的符号表入口
-j name: 仅显示指定name字段的信息
如:objdump -j .text main.out
-d: 反汇编代码
2.readelf
-S filename 查看ELF文件区的内容,可用于查找某个变量位于哪一个内存段。
更多信息可使用man readelf查看。
gdb命令
1.vmmap
查看各个地址段有无执行权限
gdb-peda$ vmmap
Start End Perm Name
0x08048000 0x08049000 r-xp /Ret2shellcode/ret2shellcode
0x08049000 0x0804a000 r--p /Ret2shellcode/ret2shellcode
0x0804a000 0x0804b000 rw-p /Ret2shellcode/ret2shellcode
2.b *地址
根据地址下断点。
3.b 函数名
根据函数名下断点。
4.disass 函数名
查看汇编代码
简单python语法
str.ljust()
str.ljust(width,fillchar=None)
width | fillchar |
---|---|
字符串总长度 | 填充字符,默认为空字符 |
使用指定字符串(fillchar)填充原字符串(str)到指定长度(width)。
如果width小于原字符串长度,则返回原字符串。
工具使用
ROPgadgets
--binary <binary>指定一个二进制文件进行分析。
--only <key> 只显示指定的部分
--string <string> 在可读段中搜索字符串
例如:
$ ROPgadget --binary rop.out --only "pop|ret" | grep rbp
0x0040124b : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
0x0040124f : pop rbp ; pop r14 ; pop r15 ; ret
0x0040115d : pop rbp ; ret
$ ROPgadget --binary rop.out --string "/bin/sh"
Strings information
=======================
0x00402008 : /bin/sh
文档与资料
Linux系统调用号
使用时转十六进制:Linux系统调用号