部分覆盖–爆破法

前言

有时候我们需要用到部分覆盖法去构造ROP链,或者堆的部分覆盖,但一般只有低12 bit是不变的,于是我们需要对低16bit进行覆盖,于是需要部分覆盖。这篇文章就是大概讲一下爆破法的实现,所谓的爆破法就是用本身已经定好的值去撞随机出来的libc的地址,直到有一次撞到libc的地址和我们设置的值相同。

模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from pwn import *
#context.log_level='debug'
context.arch='amd64'
context.log_level == "debug"
def exp():
global r
'''
获取shell
'''
r.recv(timeout = 1)


if __name__ == '__main__':
while True:
try:
exp()
r.interactive()
break
except KeyboardInterrupt:
break
except:
continue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from pwn import *
#context.log_level='debug'
context.arch='amd64'
context.log_level == "debug"
def exp():
'''
获取shell
'''
a=p.recv(timeout=0.5)
if not a:
return
p.interactive()

while 1:
try:
p = process("./ELF")
exp()
except EOFError:
p.close()
p.close()

这两个都是可以用的模板,可以根据需要来选用。