大佬教程收集整理的这篇文章主要介绍了BUUCTF-[GXYCTF2019]禁止套娃,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
考点:.git泄露、无参数RCE
用wscan扫到了/.git
目录
<?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__);
?>
分析源码得出:
1、flag在flag.PHP
2、GET传参exp
3、过滤了data://、filter://、PHP://、phar://这些伪协议,就不能用伪协议读flag.PHP
4、preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])
用preg_replace()替换匹配到的字符为NULL空。
参考:无参数读文件和RCE总结
(?R)?
:(?R)?
无参数RCE要用到的几个函数:
先查看当前目录下的所有文件名,但是这题不能有参数,找一个代替'.'
的东西
print_r(scandir(current(localeconv())));打印出当前目录下文件
?exp=print_r(scandir(current(localeconv())));
解题参考:
https://www.gem-love.com/ctf/530.html
https://skysec.top/2019/03/29/PHP-Parametric-Function-RCE/
http://www.lovexyu.xyz/art.php?art_id=58
https://www.suk1.top/2020/02/05/GXY套娃/#array-rand-array-flip
以上是大佬教程为你收集整理的BUUCTF-[GXYCTF2019]禁止套娃全部内容,希望文章能够帮你解决BUUCTF-[GXYCTF2019]禁止套娃所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。