zoukankan      html  css  js  c++  java
  • 『攻防世界』:新手区 | 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

  • 相关阅读:
    配置文件配置网络
    安装Linux centos 7.3
    java二维字符数组的输入
    前端保存JSON文件到本地
    在Springboot中使用swagger2
    Vue better-scroll使用指南
    解决端口占用问题
    CheckSum(校验和)计算
    区分按字寻址与按字节寻址
    进制转换
  • 原文地址:https://www.cnblogs.com/Zowie/p/13390446.html
Copyright © 2011-2022 走看看