网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 网络安全 >

MoeCTF24_no_more_gets WriteUp

时间:2025-04-19 18:44

人气:

作者:admin

标签:

导读:MOECTF24_no_more_gets WriteUp 1. 题目相关信息: (1) PWN 类型 linux环境 FLAG位置未知中。根据题目名称大概猜出这个题目的是提示不要再使用gets这种不安全的输入函数。 (2) 进入将给的文件用li...

MOECTF24_no_more_gets WriteUp

1. 题目相关信息:

  • (1) PWN 类型 linux环境
    FLAG位置未知中。根据题目名称大概猜出这个题目的是提示不要再使用gets这种不安全的输入函数。

  • (2) 进入将给的文件用linux系统打开,大概判断一下文件类型(file并不能保证完全正确,它更多是基于文件中幻数来判断),编译信息:得出是一个ELF,使用arch:x86_64,OS:linux,编译选项没有对heap,stack保护,也没有PIE。那么可以进行栈溢出。

    img

  • (3) 先试试这个程序是干什么的:
    似乎是一个输入密码的程序,啊这,管你这哪的,先看看有没有对输入进行限定,一看溢出,没有保护,那完了。

    img

  • (4) 用gdb打开一下看看有什么特别的函数,这一步也可以用nm快速去看文件有什么函数,链接库。

    img
    使用了gets()函数:

    img

    用nm查看程序信息

    nm:
    img

  • (5) 用IDA反编译看看这些函数要干什么,发现了内置的shell函数,那么直接通过栈溢出到这个函数即可,利用gets函数溢出,那么我们先去看看运行到gets时栈的情况,方便我们进行溢出

    img

    img

    img

    img

    img

    由以上两张图可知返回地址在rsp中,rdi(x86中,函数参数一般按照rdi,rsi,rdx,rcx,r8,r9传递,RX不够时再压栈)中是函数参数,即s2的地址,由于之前通过IDA得知它的内存大小是0x50,所以我们从rdi的地址开始写入0x50的数据还要写(0x90-0x38-0x50)=0x08B的数据,那么开始构造payload,写exploit.py

    (6)构造payload

    img

    from pwn import *
    context(os='linux',arch='amd64',log_level='debug')
    
    # p = process('./lockedshell') # 本地测试
    p = remote('IP',PORT)    # 远程,IP,PORT填上的即可
    address = 0x401176 + 1
    payload = b'A' * (0x50 + 8)   # 0x50 + 0x8
    payload += p64(address) 
    
    p.sendlineafter('.\n',payload)
    
    p.interactive()
    

    img

    成功调用my_shell。题目将exploit.py脚本中process改成IP,端口就行,flag就在当前目录。

2.为什么它会有这个漏洞?

  • 1.使用了不安全的函数gets,由于在输入时不会因为变量大小而对输入进行要求,类似scanf,也有缓冲区溢出的问题,gets早就在C11就被弃用了,虽然还可以使用(要先声明,同时会被警告),同时也是因为没有对输入后的变量长度进行检查。

  • 2.设置了不安全的shell函数,可以被调用。

  • 3.在编译时没有使用栈保护,ASLR,PIE等保护措施。

3.一开始错误思路总览:

    1. 尝试看到strncmp函数还以为要将输入字符串的指针改变,细看这里没有指针,即使我们可以修改RX的指向来通过if语句,但是我暂时没有想到有什么办法在不改程序的情况下通过输入变量来改变寄存器指向,使得mov
      $rsi,$rdi成立。
    1. 尝试使用IDA去看栈的情况,IDA使用的是静态分析中的递归下降方法反汇编的,依旧看不到栈的具体情况,还是需要使用GDB和pwndbg工具去看程序运行时(动态分析)中栈中所存地址。
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信