nssctf web 入门(3)

news/2024/12/30 2:33:42/

目录

[NISACTF 2022]easyssrf

 [SWPUCTF 2021 新生赛]ez_unserialize

 [SWPUCTF 2021 新生赛]no_wakeup


这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。

想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。

[NISACTF 2022]easyssrf

[NISACTF 2022]easyssrf

curl网站 curl可以用于向远程服务器发送http请求,并获取服务器的响应

也就是从他的电脑上发送

我们可以通过file://来查看他的文件 file://是文件协议的url在url中使用file:///可以指定本地文件的路径,类似于在操作系统中通过绝对路径访问本地文件。

发现他说查看fl4g我们查看fl4g

 

这里显示要我们查看ha1x1ux1u.php

<?phphighlight_file(__FILE__);  #通过highlight_file让当前代码显示到页面上
error_reporting(0);        #过滤错误信息$file = $_GET["file"];     #通过get方法获取file变量并赋值给file
if (stristr($file, "file")){ #if判断 stristr用于匹配$file中含不含有file如果含有则输出你败了die("你败了.");
}//flag in /flag
echo file_get_contents($file);  #通过file_get_contents读取$file 并通过echo输出到页面上

 这里因为通过file_get_content会读取file变量指定的文件,也就是我们通过指定flag文件通过file_get_contents打开并会输出到桌面 所以我们指定file的值为/flag

 [SWPUCTF 2021 新生赛]ez_unserialize

 

[SWPUCTF 2021 新生赛]ez_unserialize

 

 

f12发现disallow

Robots 协议(也称为爬虫协议、机器人协议等)的全称是 “网络爬虫排除标准”(Robots Exclusion Protocol),网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

disallow就是爬虫不能搜索的所以我们去看看robots

 

 

<?phperror_reporting(0);      #通过error_reporting屏蔽报错
show_source("cl45s.php"); #将c145s.php的代码显示到页面上class wllm{               #定义了一个wllm类public $admin;        #公共变量adminpublic $passwd;       #公共变量passwdpublic function __construct(){ #construct当类创建时调用$this->admin ="user";     #指定admin的值为user$this->passwd = "123456"; #指定passwd的值为123456}public function __destruct(){ #destruct当对象要销毁时调用if($this->admin === "admin" && $this->passwd === "ctf"){  #if判断 admin的值是不是admin passwd的值是不是ctfinclude("flag.php");  #include包含flag 当if判断成立时执行echo $flag;           #输出flag     }else{echo $this->admin;echo $this->passwd;echo "Just a bit more!";}}
}$p = $_GET['p'];   #通过get方法获取p并赋值给p
unserialize($p);   #对p进行反序列话?>

这里我们要序列话admin 值为admin passwd值为ctf

O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

 [SWPUCTF 2021 新生赛]no_wakeup

[SWPUCTF 2021 新生赛]no_wakeup​​​​​​

 

<?phpheader("Content-type:text/html;charset=utf-8"); #用于发送http报头
error_reporting(0);    #屏蔽错误信息
show_source("class.php"); #将class.php的代码显示到页面上class HaHaHa{  #定义一个叫HaHaHa的类public $admin;   #定义公共adminpublic $passwd;  #定义公共passwdpublic function __construct(){  #当类调用时执行$this->admin ="user";       #赋值admin user值$this->passwd = "123456";   #赋值passwd 123456值}public function __wakeup(){     #在反序列化后立即调用$this->passwd = sha1($this->passwd);  #将passwd的值进行哈希加密}public function __destruct(){   #当类快要结束时调用if($this->admin === "admin" && $this->passwd === "wllm"){  #if判断 admin的值是不是admin passwd的值是不是wllminclude("flag.php");    #通过include包含flag.phpecho $flag;             #输出flag}else{echo $this->passwd;echo "No wake up";}}}$Letmeseesee = $_GET['p'];  #通过get方法获取到p并赋值给Letmeseesee
unserialize($Letmeseesee);  #反序列话Letmeseesee?>

这里和上面一题差不多就是多了和wakeup对密码进行哈希加密,我们进行绕过处理

漏洞名字叫CVE-2016-7124

O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

CVE-2016-7124绕过影响的版本PHP5 < 5.6.25;PHP7 < 7.0.10
若在对象的魔法函数中存在的__wakeup方法,那么之后再调用 unserilize() 方法进行反序列化之前则会先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行 

这里我们HaHaHa中有2个对象属性,我们保证序列化字符串中的对象属性大于2就可以绕过wakeup

 

 

 


http://www.ppmy.cn/news/46642.html

相关文章

Unity集成GPT

GPT想必是最近互联网最火的话题了&#xff0c;作为一个Unity开发者&#xff0c;今天来介绍一下如何在Unity中使用GPT。 一、API 密钥 使用GPT的API首先要获得密钥&#xff0c;如下进入OpenAI官网(https://platform.openai.com/account/api-keys)–>选择自己的账号–>查…

从零学习SDK(6)调试和测试SDK的库

在前面的文章中&#xff0c;我们介绍了什么是SDK&#xff0c;以及如何选择和接入合适的SDK。在本文中&#xff0c;我们将重点讲解如何调试和测试SDK的库&#xff0c;以确保我们的应用能够正常运行&#xff0c;没有错误或异常。 SDK的库是什么呢&#xff1f;简单来说&#xff0…

K8S部署redis三主三从标准集群

docker pull redis:6.0 参考文章&#xff1a; k8s-1.2.3部署redis-clusterpredixy代理集群 - 知乎 1、Redis部署在K8S中注意事项 1.1、Redis是一个有状态应用,不应使用deployment方式部署 当我们把redis以pod的形式部署在k8s中时&#xff0c;每个pod里缓存的数据都是不一样…

ADIDAS阿里纳斯励志广告语

系列文章目录 精选优美英文短文1——Dear Basketball&#xff08;亲爱的篮球&#xff09;精选优美英文短文2——Here’s to the Crazy Ones&#xff08;致疯狂的人&#xff09;“我祝你不幸并痛苦”——约翰罗伯茨毕业致辞“亲爱的波特兰——CJ麦科勒姆告别信” Hi, I’m Gilb…

Python爬虫

目录 爬虫总览 准备工作 一、爬虫基础 1、爬虫前导 1.1、爬虫介绍 1.2、HTTP与HTTPS 1.3、URL 1.4、开发工具 1.5、爬虫流程 2、requests模块 2.1、简介 2.2、安装 2.3、发送请求 二、爬虫 爬虫总览 准备工作 一、爬虫基础 1、爬虫前导 1.1、爬虫介绍 概念&…

21天学会C++:Day1----C++的发展史

CSDN的uu们&#xff0c;大家好。这里是C入门的第一讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 什么是C 2. C的发展史 3. C的重要性 4. 如何学好C 4.1 别人如何学C 4…

QGIS--开发OpenSCENARIO动态场景(一)--Ubuntu20.04 安装QGIS

qgis的git&#xff1a; GitHub - qgis/QGIS: QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS) qgis的官网:Welcome to the QGIS project! qgis插件包下载地址&#xff1a;https://plugins.qgis.org/plugins/ 1.Prerequisi…

【Redis数据库】异地公网远程登录连接Redis教程

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 转发自CSDN远程穿透的文章&#xff1a;公网远程连接R…