• 『攻防世界』:新手区 | level0


    下来文件先checksec分析:

    canary没开,意味着可以用stack overflow
    NX开了,意味着不能直接注入shellcode,要利用现成的sysytem等lib函数和写好了的参数(比如 “insh” )
    RELRO没有full relro:意味着我们可以修改got表
    PS : ALSR意味着libc地址是随机的,也就是说,每次调用plt.entry的地址不一样
    PIE :“如果程序开启了PIE保护的话,在每次加载程序时都变换加载地址,从而不能通过ROPgadget等一些工具来帮助解题”

    得到信息:64位小端程序,没有开启canary,应该可以使用栈溢出的方法解题

    在IDA上跑一跑,看看程序的逻辑和漏洞:

    逻辑很简单,主程序就一个打印字符串,看看vulnerable_function

    这里read函数读入的长度明显大于buf的长度,用栈溢出控制程序执行流,用ida看到一个很明显的后门函数:callsystem,得到地址

    使用gdb动态调试获取垃圾数据长度:0xa0 - 0x20 = 128, 128 + 8 = 136

     有了垃圾数据长度和后门函数的地址就可以做攻击脚本了:

     执行获得shell再cat flag就ok

  • 相关阅读:
    2012搜狗校园招聘笔试题(2)
    T-SQL中只截取日期的日期部分和日期的时间部分
    Delphi XE4 TStringHelper用法详解
    TScreen 类
    TScreen 类
    Delphi中Form的position属性与代码自定义窗体位置
    如何让窗口显示在电脑屏幕中间
    C#中整型数据类型
    C# WinForm开发系列
    SQL中EXCEPT和Not in的区别?
  • 原文地址:https://www.cnblogs.com/Zowie/p/13390446.html
Copyright © 2020-2023  润新知