pwn“cache”

整理记录用到的命令,以避免每次用到查一遍

环境

docker ps查看运行的容器

docker exec -it ? /bin/bash进入?id的容器终端

chmod +x <file> 增加可执行权限

tty vim ~/.gdbinit

set context-output /dev/pts/?

设置gdb输出位置

source /pip_venv/bin/activate进入python虚拟环境

tmux进入tmux终端

链接

很多时候需要和远程统一库函数,以及符合要求的ld

ldd pwn查看pwn文件的链接情况

patchelf --replace-needed libc.so.6 ./libc.so.6 pwn用当前文件夹下的libc.so.6替换pwn需要的链接库
patchelf --replace-needed ./libc.so.6 libc.so.6 pwn改回系统链接库

strings ./libc.so.6 | grep GNU 查找符合要求的ld版本信息,如果题目提供的话就不需要了

patchelf --set-interpreter ./ld-linux-x86-64.so.2 pwn 设置解释器为当前路径下的,恢复默认:patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 pwn

或者用glibc-all-in-one的话patchelf --set-interpreter /workspace/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/ld-2.27.so pwn

patchelf --set-rpath . pwn 设置链接库路径,逆过程:patchelf --remove-rpath pwn

gdb

开始调试程序:直接跟着待调试文件名,比如:gdb pwn

start寻找程序入口并中断

run运行程序到断点或结束,可加参数

next或简写n运行下一行代码,nexti或ni,运行下一行指令,汇编层面的一行,step或s,下一行代码,遇到函数时会步入,stepi或si运行下一行汇编级的指令,遇到函数会步入。程序的函数就si,遇到库函数就ni

info register或i r查看当前寄存器信息

i address xx查看函数地址

disass xxx反汇编某处的指令

break xxx在某处下断点,info break或i b查看当前所有断点信息。可以在指定函数处b printf或者地址b *0x40127D

vmmap查看内存分配情况

checksec查看程序保护机制,NX等

quit退出

x/s 0x?以字符串查看指定位置内容

x/20gx $rsp查看rsp以下20个8字节数据(16进制)

finish执行到退出当前函数

pwntools

context(arch=‘amd64’, os=‘linux’, log_level=‘debug’)

context.terminal=[‘tmux’,‘splitw’,‘-h’]

ASCII码表

控制字符 (0-31)

十进制 十六进制 字符 描述
0 00 NUL 空字符
1 01 SOH 标题开始
2 02 STX 正文开始
3 03 ETX 正文结束
4 04 EOT 传输结束
5 05 ENQ 询问
6 06 ACK 收到通知
7 07 BEL 铃
8 08 BS 退格
9 09 HT 水平制表符
10 0A LF 换行键
11 0B VT 垂直制表符
12 0C FF 换页键
13 0D CR 回车键
14 0E SO 移出
15 0F SI 移入
16 10 DLE 数据链路转义
17 11 DC1 设备控制 1
18 12 DC2 设备控制 2
19 13 DC3 设备控制 3
20 14 DC4 设备控制 4
21 15 NAK 拒绝接收
22 16 SYN 同步空闲
23 17 ETB 传输块结束
24 18 CAN 取消
25 19 EM 介质中断
26 1A SUB 替换
27 1B ESC 换码符
28 1C FS 文件分隔符
29 1D GS 组分隔符
30 1E RS 记录分离符
31 1F US 单元分隔符

可打印字符 (32-127)

十进制 十六进制 字符 描述
32 20 (空格) 空格
33 21 ! 感叹号
34 22 " 双引号
35 23 # 井号
36 24 $ 美元符
37 25 % 百分号
38 26 & 与
39 27 ’ 单引号
40 28 ( 左括号
41 29 ) 右括号
42 2A * 星号
43 2B + 加号
44 2C , 逗号
45 2D - 连字号或减号
46 2E . 句点或小数点
47 2F / 斜杠
48 30 0 0
49 31 1 1
50 32 2 2
51 33 3 3
52 34 4 4
53 35 5 5
54 36 6 6
55 37 7 7
56 38 8 8
57 39 9 9
58 3A : 冒号
59 3B ; 分号
60 3C < 小于
61 3D = 等号
62 3E > 大于
63 3F ? 问号
64 40 @ 电子邮件符号
65 41 A 大写字母 A
66 42 B 大写字母 B
67 43 C 大写字母 C
68 44 D 大写字母 D
69 45 E 大写字母 E
70 46 F 大写字母 F
71 47 G 大写字母 G
72 48 H 大写字母 H
73 49 I 大写字母 I
74 4A J 大写字母 J
75 4B K 大写字母 K
76 4C L 大写字母 L
77 4D M 大写字母 M
78 4E N 大写字母 N
79 4F O 大写字母 O
80 50 P 大写字母 P
81 51 Q 大写字母 Q
82 52 R 大写字母 R
83 53 S 大写字母 S
84 54 T 大写字母 T
85 55 U 大写字母 U
86 56 V 大写字母 V
87 57 W 大写字母 W
88 58 X 大写字母 X
89 59 Y 大写字母 Y
90 5A Z 大写字母 Z
91 5B [ 左中括号
92 5C \ 反斜杠
93 5D ] 右中括号
94 5E ^ 音调符号
95 5F _ 下划线
96 60 ` 重音符
97 61 a 小写字母 a
98 62 b 小写字母 b
99 63 c 小写字母 c
100 64 d 小写字母 d
101 65 e 小写字母 e
102 66 f 小写字母 f
103 67 g 小写字母 g
104 68 h 小写字母 h
105 69 i 小写字母 i
106 6A j 小写字母 j
107 6B k 小写字母 k
108 6C l 小写字母 l
109 6D m 小写字母 m
110 6E n 小写字母 n
111 6F o 小写字母 o
112 70 p 小写字母 p
113 71 q 小写字母 q
114 72 r 小写字母 r
115 73 s 小写字母 s
116 74 t 小写字母 t
117 75 u 小写字母 u
118 76 v 小写字母 v
119 77 w 小写字母 w
120 78 x 小写字母 x
121 79 y 小写字母 y
122 7A z 小写字母 z
123 7B { 左大括号
124 7C I 垂直线
125 7D } 右大括号
126 7E ~ 波浪号
127 7F DEL 删除