CTFshow-pwn入门-前置基础pwn26-pwn28

news2024/11/20 6:15:31

什么是ASLR

大多数的攻击都基于这样一个前提,即攻击者知道程序的内存布局,需要提前知道shellcode或者其他一些数据的位置。因此,引入内存布局的随机化能够有效增加漏洞利用的难度,其中一种技术就是ASLR(Address Space Layout Randomization)。ASLR提供的只是概率上的安全性,根据用于随机化的熵,攻击者有可能幸运地猜到正确的地址,有时攻击者还可以爆破。

在Linux上,ASLR的全局配置/proc/sts/kernel/randomize_va_space有三种情况:0表示关闭ASLR;1表示部分开启(将mmap的基址,stack和vdso页面随机化);2表示完全开启(在部分开启的基础上增加heap的随机化)。如下:
在这里插入图片描述
我们可以修改/proc/sts/kernel/randomize_va_space文件的值来配置ASLR。

pwn26

在这里插入图片描述
我们还是先下载pwn文件托到虚拟机加可执行权限使用checksec命令查看文件信息。
在这里插入图片描述
pwn文件是64位的,直接拖进ida64反编译看源码:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  void *ptr; // [rsp+0h] [rbp-10h]
  void *v5; // [rsp+8h] [rbp-8h]

  ptr = malloc(4uLL);
  v5 = dlopen("/lib/x86_64-linux-gnu/libc.so.6", 258);
  puts(s);
  puts(asc_4008F0);
  puts(asc_400970);
  puts(asc_400A00);
  puts(asc_400A90);
  puts(asc_400B18);
  puts(asc_400BB0);
  puts("    * *************************************                           ");
  puts(aClassifyCtfsho);
  puts("    * Type  : Linux_Security_Mechanisms                               ");
  puts("    * Site  : https://ctf.show/                                       ");
  puts("    * Hint  : Please confirm your ASLR level first !                  ");
  puts("    * *************************************                           ");
  puts("Here is your ASLR level:");
  system("cat /proc/sys/kernel/randomize_va_space");
  puts("If the result is 0, then you get the correct flag!");
  puts("If not,you will get a fake flag!");
  printf("flag is :ctfshow{%p", main);
  printf("_%p", system);
  printf("_%p", ptr);
  printf("_%p", v5);
  puts("}");
  free(ptr);
  return 0;
}

在这里插入图片描述
我们从这几条语句可以得出,大概逻辑就是先读取我们系统中/proc/sys/kernel/randomize_va_space文件的内容,若里面的内容是0,那接下来输出的flag就是正确的,如果文件的内容不是0,那么输出的flag就是错的。

那好,我们先看我们系统中的/proc/sys/kernel/randomize_va_space文件的内容是否为0。

cat /proc/sys/kernel/randomize_va_space

在这里插入图片描述
看到我们的内容不是0,而是2。那么我们就得把它改为0。

注意,我们要更改/proc/sys/kernel/randomize_va_space,就必须将用户切换到root,不然是改不了的。

su root
echo 0 > /proc/sys/kernel/randomize_va_space
./pwn

在这里插入图片描述
这样我们就得到了正确的flag。

pwn27

在这里插入图片描述
我们还是先下载pwn文件托到虚拟机加可执行权限使用checksec命令查看文件信息。
在这里插入图片描述
还是64位的,我们还是拖进ida64反编译一下。

int __cdecl main(int argc, const char **argv, const char **envp)
{
  void *ptr; // [rsp+0h] [rbp-10h]

  ptr = malloc(4uLL);
  dlopen("./libc-2.27.so", 258);
  puts(s);
  puts(asc_4008D0);
  puts(asc_400950);
  puts(asc_4009E0);
  puts(asc_400A70);
  puts(asc_400AF8);
  puts(asc_400B90);
  puts("    * *************************************                           ");
  puts(aClassifyCtfsho);
  puts("    * Type  : Linux_Security_Mechanisms                               ");
  puts("    * Site  : https://ctf.show/                                       ");
  puts("    * Hint  : Please confirm your ASLR level first !                  ");
  puts("    * *************************************                           ");
  puts("Here is your ASLR level:");
  system("cat /proc/sys/kernel/randomize_va_space");
  puts("If the result is 0 or 1, then you get the correct flag!");
  puts("If not,you will get a fake flag!");
  printf("flag is :ctfshow{%p", main);
  printf("_%p", system);
  printf("_%p", ptr);
  puts("}");
  free(ptr);
  return 0;
}

在这里插入图片描述
这道题目相较于上道题目,是/proc/sys/kernel/randomize_va_space这个文件的内容为0或者1都可以得到正确的flag。由于我们在上到题目中已经把/proc/sys/kernel/randomize_va_space这个文件中的内容改为了0,所以我们直接运行pwn文件就能拿到flag了。
在这里插入图片描述

pwn28

在这里插入图片描述
我们还是先下载pwn文件托到虚拟机加可执行权限使用checksec命令查看文件信息。
在这里插入图片描述
还是64位的,我们还是拖进ida64反编译一下。

int __cdecl main(int argc, const char **argv, const char **envp)
{
  void *ptr; // [rsp+0h] [rbp-10h]

  ptr = malloc(4uLL);
  dlopen("./libc-2.27.so", 258);
  puts(s);
  puts(asc_4008A0);
  puts(asc_400920);
  puts(asc_4009B0);
  puts(asc_400A40);
  puts(asc_400AC8);
  puts(asc_400B60);
  puts("    * *************************************                           ");
  puts(aClassifyCtfsho);
  puts("    * Type  : Linux_Security_Mechanisms                               ");
  puts("    * Site  : https://ctf.show/                                       ");
  puts("    * Hint  : Please confirm your ASLR level first !                  ");
  puts("    * *************************************                           ");
  puts("Here is your ASLR level:");
  system("cat /proc/sys/kernel/randomize_va_space");
  printf("flag is :ctfshow{%p", main);
  printf("_%p", system);
  puts("}");
  free(ptr);
  return 0;
}

在这里插入图片描述
这道题目比前两道题好像还简单,什么限制都没有,直接运行就能拿flag,天大的好事呀!!!
在这里插入图片描述

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

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

相关文章

无线wifi视频传输方案|基于qca9531方案SKW99的无线视频流云端推送方案

为满足物联网智慧校园,智能家居,智慧工厂,智能交通、智慧博物馆、培训机构等不同行业实时直播的需求。本篇以集成200万高清摄像头功能的高通方案qca9531 wifi模块SKW99为为例,简单介绍基于WiFi技术的无线视频流云端推送方案。 1、…

上位机与两台PLC之间无线PPI通信

在实际系统中,人机界面与PLC通常不在一起,中心计算机一般放置在控制室,而PLC安装在现场车间,二者之间距离往往从几十米到几千米。如果布线的话,需要挖沟施工,比较麻烦,这种情况下比较适合采用无…

0基础学习VR全景平台篇第47篇:底部菜单-场景/分组复制功能

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,底部菜单—场景/分组复制功能操作。 功能位置示意 一、本功能将用在哪里? 平台用户在编辑作品时可以使用本功能将作品中的某一分组或者某一场景进行复…

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统 在岩土工程监测中,振弦传感器被广泛应用于测量土体或岩体的振动情况,以了解地震或其他振动事件对结构物或地基的影响。振弦传感器具有高精度、快速响应、易于安装和低成本等优…

django校园宿舍管理系统-计算机毕设 附源码84831

django校园宿舍管理系统 摘 要 本论文主要论述了如何使用Django开发一个校园宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述校园宿舍管理系统的当…

RocketMQ部署之动态设置JVM启动参数

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 线上的RocketMQ集群有运行一段时间了。比如测试环境和线上环境的RocketMQ集群部署的机器内存大小肯定不一样。所以可能要写多个部署脚本。非常麻烦 官方的部…

一张图秒懂嵌入式Linux系统的启动流程

一图胜千言!看图: 上图是嵌入式系统启动流程图,图中红色的数字圆点表示启动的先后顺序。主要分为 4 个阶段,分别是:第一阶段 bootloader,第二阶段uboot,第三阶段内核启动,第四阶段 a…

【数据管理架构】OLAP 与 OLTP:有什么区别?

这些术语经常相互混淆,那么它们的主要区别是什么?您如何根据自己的情况选择合适的术语? 我们生活在一个数据驱动的时代,使用数据做出更明智决策并更快响应不断变化的需求的组织更有可能脱颖而出。您可以在新的服务产品&#xff08…

理想吹响城市NOA号角:激光雷达车型又火了

作者 | 德新编辑 | 王博 2023下半年,以华蔚小理为代表的智能驾驶头部厂商,其高阶辅助驾驶全面进城。 在过去短短一周时间里,蔚来、华为、理想、小鹏紧锣密鼓悉数公布了新进展。此外据HiEV了解,比亚迪、智己、飞凡等品牌的智驾团队…

excel爬虫相关学习2:vba 爬虫相关xmlhttp

目录 前言:vba 爬虫相关xmlhttp的方法 1 什么是xmlhttp 1.1 定义 1.2 特点 1.3 创建xmlhttp对象的过程 1.4 XMLHTTP对象创建的几种方法: 2 XMLHTTP方法: 2.1 xmlhttp.open(Method, Url, Async, User,Password) 2.1.1 xmlhttp.open(…

再谈JWT

什么是JWT JSON Web Token是一个开发标准(RFC 7519),定义了一个紧凑且独立的方式,可以将各方之间的信息作为JSON对象进行安全传输,该信息可以验证和信任,因为是经过数字签名的。 JWT是JSON Web Token的缩写,是一种轻…

第39步 深度学习图像识别:Inception V3建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 (1)Inception V1 Inception是一种深度学习模型,也被称为GoogLeNet,因为它是由Google的研究人员开发的。Inception模型的主要特点是它的“网络中的网络”结构,也就是说&#x…

编译原理笔记6:从正规式到词法分析器(3):DFA最小化、词法分析器的构造、Lex 使用示例

目录 从 DFA 到最小 DFA等价可区分划分算法:最小化 DFA 的状态数(DFA化简)手写 DFA 词法分析器的构造Lex 使用示例 从 DFA 到最小 DFA 关于星闭包的补充:一个语言被认为是所有可能字的子集。所有可能字的集合可以被认为是所有可能…

手机操作系统的沉浮往事(下)

接上篇:手机操作系统的沉浮往事(上) 2007年,是手机市场发生历史性转折的一年。 这一年的1月9日,在Macworld 2007大会上,史蒂夫乔布斯正式发布了第一代iPhone。 改变人类科技史的一天 iPhone的问世&#xff…

LeetCode - #83 删除排序链表中的重复元素

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

收藏 | 14 种免费 GIS 软件

如果你想绘制一幅世界地图,会选择什么GIS软件呢,ArcGIS、GlobalMapper这些都是国外比较出名的商业GIS软件,当然在国内很容易找到可用的版本,但是也可以使用免费的GIS软件完成所有操作。 这些免费的GIS软件为您提供了完成工作的效…

服务的熔断、降级与限流

1、引言 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果…

基于Python的高校学生学业预警系统的设计与实现

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计

本部分主要介绍 FPGAARM 控制部分的软件设计。 FPGAARM 控制部分包括 Verilog HDL 硬件描述语言和 C 语言的开发。 FPGA 部分主要控制 AD7606 模数转换、数字三相锁相 环和FFT谐波计算模块、 SDRAM 控制器的设计、 FSMC 接口模块等。 ARM 部分主要完成嵌 入式实时操作系统 …

十个你必须要会的TypeScript技巧

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 1. 泛型的使用 泛型可以让我们编写更具灵活性、可重用性和类型安全性的代码。在 TypeScrip…