部分覆盖–爆破法
前言
有时候我们需要用到部分覆盖法去构造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.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.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()
|
这两个都是可以用的模板,可以根据需要来选用。