zoukankan      html  css  js  c++  java
  • 寒假训练 jarvisoj_level6_x64(6/250)

    安全检查

    没全开relro说明可以修改got表

     流程分析

    初始化函数,程序一开始就分配了一个很大的chunk,用来存储其他的小chunk地址

     show函数,把所有的chunk里的content输出

     add函数,只能让你分配unsorted bin里的chunk

     edit函数,这里的realloc我一开始没有看到,所以不知道edit用的是realloc来分配的

     delete函数,uaf漏洞,并且没有安全检查

     思路

    在这之前先讲一下realloc的一个特点,当我分配3个大小为0x80的chunk时,释放第一个chunk,在用realloc设置chunk0的大小为0x90,此时chunk0的大小会变为0x120,导致了overlap

    1. 我们一开始分配5个chunk,由于有uaf,所以我们将chunk 1与chunk3释放了,此时chunk1的fd指针指向的是chunk3,然后我们在利用realloc函数的特性,泄露出heap的地址,从而算出chunk0 在heap0的偏移
    2. 算出chunk0在heap0的存储位置后,在通过unlink,来将chunk0的指针指向chunk0在heap0的offset -0x18位置,此时我们就可以发现heap0里所存储的chunk0已经变成了heap0的0x18偏移处,此时我们可以修改指向content的内容了
    3. 由于aslr没开,我们可以修改got的地址,在加上由于realloc函数,不会将chunk放入bin中,所以我们直接将指针变为free函数的指针,leak libc再将free got的位置改为system,在将其中一个chunk的content内容变为/bin/sh即可getshell

    exp我打算过几天再来写,这里首先要感谢 lemon想学二进制 师傅的博客

    反思

    这道题让我发现unlink的本质不是bss段,全局变量,而是那些存储了chunk的数组或容器之类的东西,只要可以知道地址,就都可以unlink

    这道题理应是不该看wp的,但由于我有很多函数没去仔细的分析例如初始化和edit函数,所以导致没写出来,自己还是太菜了,不能因为最近比赛可以写出pwn的签到题而膨胀了,应该虚心接受,沉下心来,下次比赛我要攻克两道pwn题!!!

  • 相关阅读:
    mongodb的学习-1-NoSQL
    mongodb的学习-3-在Mac上的安装配置
    面试题之算法与编程
    笔试题之javaweb
    笔试题之j2ee
    笔试题之代码查错
    笔试题之java基础
    javaweb笔记分享
    过滤器入门
    jsp入门
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14294818.html
Copyright © 2011-2022 走看看