zoukankan      html  css  js  c++  java
  • plaidctf-2016 Pwn试题小结

    回顾了一下今年plaidctf Pwn部分的题目,感觉还是蛮有意思的,值得研究一下。

    1.unix_time_formatter-76

    最简单的一道题,考点是UAF。说是UAF但是其实根本就不算是真正的UAF利用,无非就是对释放的内存块进行同大小的占位。因为程序中会把内存块的内容作为system函数的参数,所以只要重新占位并写入/bin/sh就可以了,这道题还是相当简单的。

    2.butterfly-150

    这道题比较有趣。详细的看了一下。

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      setbuf(_bss_start, 0LL);
      puts("THOU ART GOD, WHITHER CASTEST THY COSMIC RAY?");
      if ( fgets(&buf, 50, stdin) )
      {
        v4 = strtol(&buf, 0LL, 0);
        v5 = v4;
        v6 = v4 >> 3;
        bianhuan = (v4 >> 3) & 0xFFFFFFFFFFFFF000LL;
        if ( mprotect((void *)bianhuan, 4096uLL, 7) )
        {
          perror("mprotect1");
        }
        else
        {
          v3 = 1;
          *(_BYTE *)v6 ^= 1 << (v5 & 7);
          if ( mprotect((void *)bianhuan, 0x1000uLL, 5) )
          {
            perror("mprotect2");
          }
          else
          {
            puts("WAS IT WORTH IT???");
            v3 = 0;
          }
        }
      }
     }

    这道题的所有代码就只有这么多,并不存在我们通常认识的漏洞,此题的考点是位翻转的利用

    buf是栈上空间,简单的来说就是获取一个整数,然后把这个数作为地址去做一个位运算。有趣的是在位运算之前对地址增加w权限,运算之后又关闭w权限。
    由这个权限变化我首先想到的就是对指令进行写操作,因为一般来说没有写权限的地址太少了,题目特意给了写权限就是让我们去写指令。其中对EIP的劫持也很有趣,需要对opcode有比较深入的了解。

    具体的利用步骤参见:http://r0p.club/2016/butterfly/

  • 相关阅读:
    shFlags简介
    ubuntu下mediawiki的使用
    保护眼睛(ubuntu 和 chrome)
    ubuntu14.04下安装ngnix,mediawiki,nodebb,everything,gitlab
    JavaScript之闭包就是个子公司
    第三次作业——个人作业——软件产品案例分析
    第二次作业——结对项目之需求分析与原型设计
    《软件工程实践》第一次作业
    2016的软件工程开始啦
    Spring-Boot-应用可视化监控
  • 原文地址:https://www.cnblogs.com/Ox9A82/p/6087376.html
Copyright © 2011-2022 走看看