[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. (数据科学学习手札131)pandas中的常用字符串处理方法总结

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...

  2. DataGrid首次进入页面时,不加载任何数据[转]

    首次不加载数据问题,必须搞明白如何才能不加载数据.根据Easu UI的官方API: http://www.jeasyui.com/documentation/ 仔细观察DataGrid的事件当中有一个 ...

  3. 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名

    正则表达式爬取豆瓣电影TOP前250的中英文名 1.首先要实现网页的数据的爬取.新建test.py文件 test.py 1 import requests 2 3 def get_Html_text( ...

  4. Codeforces 1422F - Boring Queries(树套树)

    upd on 2021.9.5:昨天的那个版本被 2-tower 卡爆了,故今天重发一个. Codeforces 题面传送门 & 洛谷题面传送门 没往"每个数最多只有一个 \(> ...

  5. Codeforces 840E - In a Trap(树分块+trie)

    Codeforces 题面传送门 & 洛谷题面传送门 一道非常精彩,同时也很经典的题目.和这场的 C 一样经典 首先看到这个数据范围先猜正解复杂度:\(n\) 级别大于 \(q\),所以大概是 ...

  6. Codeforces 627E - Orchestra(双向链表,思维题)

    Codeforces 题目传送门 & 洛谷题目传送门 下设 \(n,m\) 同阶. 首先有一个傻子都会的暴力做法,枚举矩形的上.下边界 \(l,r\),考虑集合多重集 \(S=\{y|x\in ...

  7. 洛谷 P4709 - 信息传递(置换+dp)

    题面传送门 一道挺有意思的题罢-- 首先看到这种与置换乘法相关的题,首先把这些置换拆成一个个置换环,假设输入的置换有 \(m\) 个置换环,大小分别为 \(s_1,s_2,\cdots,s_m\),显 ...

  8. 根据VCF构建进化树

    VCF2Dis,是一款计算根据vcf文件计算距离矩阵的小工具 1 安装 下载后 tar -zxvf VCF2DisXXX.tar.gz cd VCF2DisXXX make # 添加环境变量即可 2 ...

  9. Redis高并发处理常见问题及解决方案

    1. 大型电商系统高流量系统设计 场景: 大量电商系统每天要处理上亿请求,其中大量请求来自商品访问.下单.商品的详情是时刻变化,由于请求量过大,不会频繁去服务端获取商品信息,导致服务器压力极大.需要用 ...

  10. C语言小练习 微型学生管理系统

    很简陋,没有做输入校验,以写出来为第一目的,中间出了不少问题,尤其是结构体内字符串赋值的时候(理解不透彻),字符串比较用strcmp不能直接==判定,逻辑也很重要,不然会出现莫名其妙的问题. 涉及知识 ...