0%

工具

本篇主要更新pwn过程中使用的工具及其使用方法,功能不做赘述。


pwntools

1
nc 网址,端口号#连接网站

几乎用于很简单的pwn题或直接连接靶机做题


ROPgadget

1
ROPgadget --binary 文件名 --only "pop|ret"

用于查找代码中对应的汇编命令的地址

1
2
3
4
5
6
7
8
9
10
ROPgadget --binary 文件名 --string '/bin/sh'

ROPgadget --binary 文件名 --string '/sh'

ROPgadget --binary 文件名 --string 'sh'

ROPgadget --binary 文件名 --string 'cat flag'

ROPgadget --binary 文件名 --string 'cat flag.txt'

用于查找代码中对应的getshell命令字符或关于flag的指令

1
ROPgadget --binary 文件名 --ropchain

生成现成的ropchain,可以直接实现getshell(静态,且要求文件使用gets函数读取,因为静态链较长,一般无法缩短过多)


patchelf

修改ld(我一般会将下载的放置在题目文件夹,否则需要相对路径)

1
patchelf --set-interpreter 版本号/ld-linux.so.2 ./文件名
1
patchelf --set-interpreter 2.23-0ubuntu3_amd64/ld-linux-x86-64.so.2 ./pwn

修改libc

1
patchelf --replace-needed libc.so.6  ./(路径)/libc.so.6 ./pwn
1
patchelf --replace-needed libc.so.6 ./libc.so.6 ./pwn

添加libc

1
2
patchelf --add-needed 版本号/libc.so.6 ./文件名

1
2
3

patchelf --add-needed 2.23-0ubuntu3_amd64/libc.so.6 ./pwn

补充常用的libc版本

2.23-0ubuntu11.3_amd64
2.27-3ubuntu1.5_amd64


ropper

与ROPgadget类似,静态链用法

1
ROPgadget --binary pwn --ropchain//一般生成较长,可人为缩减

glibc all in one

一般情况

先展出所有libc列表

1
cat list

下载所需要的glibc版本

1
sudo ./download 版本号  #下载所需版本

特殊情况

展出老版本列表

1
cat old_list

下载老版本列表

1
2
./download_old 版本号

先后顺序搞清楚,下载后移到题目文件夹,方便搭建环境


pwndbg

开了PIE

1
b *$rebase(0x相对基址偏移)  //下断点下到特定地址

alpha3

主要用于shellcode修改为题目的可见字符(使用alpha3进行编码shellcode,生成一段没有坏字符的shellcode。然后使用jmp esp进行shellcode注入。)

1
2
3
cd alpha3
python ./ALPHA3.py x64 ascii mixedcase rax --input="存储shellcode的文件" > 输出文件