PWN手成长之路-07-bjdctf_2020_babystack2-栈溢出+整型溢出

news/2025/10/4 1:08:04/文章来源:https://www.cnblogs.com/B0rry/p/19125177

image

远程交互以下。
image

file 查看文件属性。64 位,LSB 可执行文件。
image

checksec 查看文件安全属性。开启了 NX 保护,栈上无法执行。
image

IDA 打开文件查看 main 函数。
image
代码流程:让用户输入一个整数,再将其存到 nbytes 变量中,之后通过 if 判断用户输入的整数是否大于 10 了,如果大于则终止程序。若为大于 10,则询问用户的名字,并将该名字存储到 buf 缓冲区中。

解题思路:绕过 if 的判断,使 read()函数溢出,但是输入大于 10 的整数会触发 exit(-1) 而终止程序,所以就需要一个既小于 10 而又大于 10 的整数

仔细查看 main 函数,在 read() 函数读取时, 将第一次的输入转换成了 unsigned int,即无符号整数。
image

unsigned int 是是一种无符号整数类型,即其存储的二进制位全部用于表示数值大小不包含符号位,它的二进制形式是一个纯数值编码,所有位均参与数值计算。例如,在32位系统中 unsigned int 占用4字节(32位),其取值范围为:0 到 2^32 - 1(即 0 到 4,294,967,295)。

但是,当 unsigned int 与有符号整型混合运算时,有符号数可能被隐式转换为无符号数,导致数值语义变化(如 -1 变为 4294967295)。

所以当我们输入-1时,可以成功绕过if,并且程序在执行到read函数时,读取的字节会变成4294967295个字节。

之后就是溢出 read() 函数,覆盖返回地址。

查看 buf 的栈,可以知道溢出的大小为:0x10+8=0x18→24
image

并且存在 backdoor 地址为:0x400726
image

编写exp:

from pwn import *r=remote('node5.buuoj.cn',25304)
backdoor_addr=0x400726
payload=b'a'*(0x18)+p64(backdoor_addr)
r.sendlineafter('name','-1')
r.sendline(payload)
r.interactive()

PWN!
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何做可以赚钱的网站上海公司车牌最新价格

游戏地址自己写完了可以根据结果去测试一下。 算法分析 八皇后问题算法思路分析 1)第一个皇后先放第一行第一列 2)第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在.第二列、第三列、依次把所有列都放完&#x…

dedecms 网站 经常无法连接现在的网站做多大尺寸的

引言 很久没写合约了,今天一写很多语法都忘记了,整理一下把 函数 语法描述public公有,任何人(拥有以太坊账户的)都可以调用 牢记private私有, 只有智能合约内部可以调用 牢记external仅合约外部可以调用,合约内部需使用this调用 先忽略inter…

郑州网站建设服务拼多多找货源哪里找

一、总则 1.1、欢迎您选用CSDN付费专栏服务(“本服务”)。以下所述条款和条件即构成您与CSDN就使用本服务所达成的协议(“本协议)。本协议被视为《CSDN用户服务条款》(链接:https://passport.csdn.net/ser…

jellyfine-code1008播放器无法实例化错误、群晖系统分区空间不足解决办法

jellyfine-code1008播放器无法实例化错误,最终是由于群晖系统空间问题。 每一块 群晖磁盘 的第一个 2.4G大小的分区,是系统分区,这个分区里储存了一些系统基础数据,但是套件的数据并不在这里 既然是系统储存空间满…

网站建设的常用技术wordpress 去掉功能

名称:FIFO存储器设计1024*8bit 软件:Quartus 语言:Verilog 本代码为FIFO通用代码,其他深度和位宽可简单修改以下参数得到 reg [7:0] ram [1023:0];//RAM。深度1024,宽度8 代码功能: 设计一个基于FPGA…

怎样搜网站可以做外国网站文章

目录 一、扩展和收缩 二、使用高质量的哈希函数 三、使用跳跃表(skiplist)或其他数据结构 四、哈希表分片 一、扩展和收缩 Redis通过动态调整哈希表的大小来解决“数组链表”的长度问题,这涉及到两个过程:扩展(Expand)和收缩(S…

将GitHub项目克隆后在本地修改好后如何同时提交到GitHub和Gitee

1. 在 Gitee 上新建一个同名仓库登录 Gitee 右上角 "+" → 新建仓库 仓库名建议和 GitHub 上的一致(方便管理) 不要勾选 “初始化仓库”(否则是空仓库,有初始提交,会和 GitHub 的历史冲突) 创建成功后…

购物网站建设图标大全wordpress资源下载类主题

鲲鹏生态软硬件构成 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 鲲鹏软件构成 鲲鹏处理器的软件生态是一个不断发展的软件生态,服务器本身也具有复杂度多样性,经过很长时间的发展服务器硬件有不同的操作系统方案&#xff0c…

手机端企业网站模板南京建站公司网站

在职场工作中,经常会遇到单元格中有汉字,数字,字母三者的自由组合,但往往只需要其中的一者,如何快速提取呢,超级处理器,提供了4个功能可选。 超级处理器下载与安装 1)分离字符 将…

怎么做一考试网站温州最好的seo

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。 本节案例如下(其他动效篇幅原因逐步讲解,欢迎三…

MySQL.Data.DLL 官网下载方法 2025

vs2022中需要链接MySql数据库,引用 MySQL.Data.DLL 必要的文件,去官网下载无疑是最安全的方法。 官网下载地址:https://www.mysql.com/ 第二步:第三步好啦,下载后需要安装一下,去项目里引用吧。

宣泄情绪

到达心情低谷了。 就这点实力还想拿省一?真是可笑!学了 6 年的 OI,啥也没学会,简单题想不出来,难题更是打不出... 我到底在做些什么?从来都没有正视过自己的问题,每天都在痴心妄想就想出成绩?打不过就是打不过…

团购网站APP怎么做我做网站编辑写文章很慢怎么办

体系结构 Kube路由器是围绕观察者和控制器的概念而建立的。 观察者使用Kubernetes监视API来获取与创建,更新和删除Kubernetes对象有关的事件的通知。 每个观察者获取与特定API对象相关的通知。 在从API服务器接收事件时,观察者广播事件。 控制器注册以获…

趣题记

收录了一些很可爱的题呢。 有些写了题解有些没写,所以长短不一,能不贴代码我也尽量不贴,让长度短一点。 CF622F拉格朗日插值求 \(\sum_{i = 1}^{n} i^k\),\(n \le 10^9, k \le 10^6\)。感性理解一下,当 \(k\) 为 …

执行一次 git commit 后,本地的这次提交能同时推送到 GitHub 和 Gitee 两个远程仓库

我们只需要配置 同一个远程名 对应 多个 URL,这样一次 git push 就能同时推送到 GitHub 和 Gitee。 方法一:给一个远程仓库配置多个推送地址 假设你本地已经有一个仓库,并且远程名是 origin: # 查看当前远程配置 g…

【一起学rust | 基础篇】环境配置

【一起学rust | 基础篇】环境配置 工欲善其事,必先利其器。在我们进入到rust的世界之前,首先需要将我们的环境配置完成,如编译环境,书写代码的工具以及提升我们编程体验的插件等。 安装rust 可以去到官网根据指示进…

QWEN

自动化测试平台项目概述 这个项目是一个专注于基于 TestNG 的自动化测试的自动化测试平台。它由两个主要组件组成: 1. auto-testng-app (Rust 桌面应用程序)目的:一个跨平台的桌面 GUI 应用程序,用于管理 TestNG 自…

怎么用wordpress做企业网站南京百姓网免费发布信息网

最近打算好好学习下Java,所以打算记录下一些知识点或者是值得记住需要记住的代码吧! 1.灵活使用位运算实现加密算法 可以使用“^”异或运算符把字符串与一个特定值进行异或运算,这样就可以得到一个加密后的字符串,这就是一个简单…

Day25捕获与抛出异常

异常处理中的五个关键词 try,catch,finally,throw,throws package com.exception;public class Test {public static void main(String[] args) {int a = 1;int b = 0;//System.out.println(a/b);//存在逻辑错误,…

汕尾建设局网站首页廊坊网站建设

目录 调用 指挥者 抽象建造者 建造者 定义具体产品 调用 用指挥者指挥建造者建造产品 在指挥者这里组装成产品 namespace _建造者模式 {internal class Program{static void Main(string[] args){Builder buildernew JiangHuaiBuilder();//建造者Director director new…