CTFshow-pwn入门-pwn26-pwn28

news/2024/11/24 13:53:05/

什么是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.ppmy.cn/news/495244.html

相关文章

OPPO手机桌面记事本便签软件

相信有不少女生使用的都是OPPO手机,OPPO手机的颜值、拍照等方面都是非常不错的。不过有不少用户在使用手机的过程中,发现自己的手机便签并不是很好用,例如OPPO(R9s)手机自带的便签不支持添加桌面插件。 有不少人想要找…

麒麟 桌面 V10(龙芯)apt-get 源

添加apt-get 源证书 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F49EC40DDCE76770 更换 麒麟 桌面 V10(龙芯)apt-get 源 deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main restricted universe multiverse deb http://a…

oppor15android版本8.1,OPPO R15体验:基于安卓8.1,ColorOS 5.0更好用

当目前智能手机硬件性能普遍过剩,越来越多的人们开始逐渐意识到,参数并不等于体验,反而是依附于硬件之上的操作系统很大程度上直接决定了一款智能手机的使用体验。 在当前智能手机市场,虽然说安卓系统占据了绝大部分市场份额&…

arm寄存器之r14,r15

(1)PC是程序计数器,存储将要执行的指令地址 (2)LR是链接寄存器,是ARM处理器中一个有特殊用途的寄存器,当调用函数时,返回地址即PC的值被保存到LR中(mov lr,pc&#xff0…

Electron 和 Angular 项目升级

Electron 和 Angular 项目升级: Angular4Electron1.7.8 升级到 Angular13Electron2 原项目 Angular 和 Electron 版本: angular/cli: 1.4.9angular/core: 4.4.6Electron: 1.7.8 升级后 Angular 和 Electron 版本: Angular: 13.3.1Electron: 21.2.1 流程: angular-electro…

手机资料小摘

一、各种品牌手机中英文对照 Acer::宏基 AIWA:爱华 alcatel(ALC):阿尔卡特 AMOI:夏新 APBW:亚太 APPLE:苹果 Arcoa:全虹 ASUS:华硕 AUX:奥克斯 Be…

真正的手机密码大全!(整理完整版)

手机一旦设的密码忘记了怎么办?很多人到手机修理的地方或者厂方去解锁,往往收取不菲的费用,其实很多手机只要自己输入解锁码就可以了。以下收集整理的满全了应该。 一、各种品牌手机中英文对照 Acer::宏基 AIWA:爱华 a…

C++基础(4)——类和对象(2)

前言 本文主要介绍了C中类和对象的基本知识。 4.2.5:深拷贝和浅拷贝 浅拷贝:编译器给我们提供的拷贝函数就是等号复制操作 深拷贝:自己手动重写一个拷贝构造函数,重新new 浅拷贝会出现的问题:如果使用编译器提供的…