美文网首页
实验吧Wp之因缺思婷的绕过

实验吧Wp之因缺思婷的绕过

作者: Vophan | 来源:发表于2019-08-11 16:59 被阅读0次

这道题真的是涨了我的知识,也确实interesting

而且,因为我想要加大刷题的量,不想码字占用我太多的时间,所以未来的writeup的格式可能会很简陋,但是一定会有重点,会有该有的东西。

开始~

题目:http://ctf5.shiyanbar.com/web/pcat/index.php

首先,还是web题的老套路,抓包,看源码,找hint,审计代码......

我们在网页的注释中发现了source.txt里面放着源码,然后开始审计:

<?php
error_reporting(0);

if (!isset($_POST['uname']) || !isset($_POST['pwd'])) {
    echo '<form action="" method="post">'."<br/>";
    echo '<input name="uname" type="text"/>'."<br/>";
    echo '<input name="pwd" type="text"/>'."<br/>";
    echo '<input type="submit" />'."<br/>";
    echo '</form>'."<br/>";
    echo '<!--source: source.txt-->'."<br/>";
    die;
}

function AttackFilter($StrKey,$StrValue,$ArrReq){  
    if (is_array($StrValue)){
        $StrValue=implode($StrValue);
    }
    if (preg_match("/".$ArrReq."/is",$StrValue)==1){   
        print "水可载舟,亦可赛艇!";
        exit();
    }
}

$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
foreach($_POST as $key=>$value){ 
    AttackFilter($key,$value,$filter);
}

$con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
$db="XXXXXX";
mysql_select_db($db, $con);
$sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
$query = mysql_query($sql); 
if (mysql_num_rows($query) == 1) { 
    $key = mysql_fetch_array($query);
    if($key['pwd'] == $_POST['pwd']) {
        print "CTF{XXXXXX}";
    }else{
        print "亦可赛艇!";
    }
}else{
    print "一颗赛艇!";
}
mysql_close($con);
?>

比较引人注意的是,这次的过滤,很全面,把我们常规思路大概都过滤掉了。

而且,后面的mysql_num_rows($query) == 1也让我们看不到结果,于是没有办法,我只能猜测是基于时间的盲注,但是我们发现sleep benchmark以及括号都被过滤了。而且,就算前面的限制都过去,你也不知道pwd。

那么,这是用到了sql语句中的一个叫做rollup的东西,他是用在groupby后进行数据统计的,与他类似的有一个叫做cube的,他和rollup的不同之处也就是我们要利用的地方,讲道理,用cube也是可以的,因为对于单一分组来说,也就一组数据报表。但是尝试发现不可以,这里不知道为什么。

rollupcube呢,其实就是groupby的一个扩展功能,叫做超级聚合,也就是对于分组数据进行一下统计报表。讲道理他是和聚合函数连用的,来产生一个合计的数据,但是,同时他也会产生一个NULL的数据。

后来,我想了一下,为什么是这样呢?

首先,我们构造的sql里面groupby 却没有聚合,所以得到的就是单独的一列内容,然后在这单独的一列上rollup得到的就是null

所以,只要我们的password不传值进去,我们就通过验证了。

相关文章

  • 实验吧Wp之因缺思婷的绕过

    这道题真的是涨了我的知识,也确实interesting 而且,因为我想要加大刷题的量,不想码字占用我太多的时间,所...

  • 实验吧因缺思厅的绕过

    思考过程: 打开开发者工具,发现source.txt,检查源代码。 发现了过滤 and|select|from|w...

  • [实验吧](web)因缺思厅的绕过 源码审计绕过

    0x00 直接看源码吧 早上写了个注入fuzz的脚本,无聊回到实验吧的题目进行测试,发现了这道题 地址:http:...

  • 实验吧-SQL注入-因缺思汀的绕过

    首先,点开查看源码发现最下面有一个source.txt,打开source.txt,分析得知,它对密码框进行了过滤。...

  • 实验吧web-简单的登录题

    该wp学习自Pcat大佬在实验吧的wp 题目地址:http://ctf5.shiyanbar.com/web/ji...

  • 实验吧-上传绕过

    上传绕过 原题链接 http://ctf5.shiyanbar.com/web/upload 分析 注意到抓到的包...

  • 实验吧WP之简单的sql注入

    其实感觉确实不难,不过一些比较看经验的地方没有把握好,导致一直没有出flag 首先,看到这道题,题目很明确,注入。...

  • 实验吧WP之拐弯抹角

    简单记录一下这道题的思路,增长知识面 首先,这道题是关于url伪静态的知识。 网页分为静态网页,动态网页,以及伪静...

  • 实验吧-WEB题解

    主要方法 工具 题型3 因缺思汀的绕过 访问解题链接去访问题目,可以进行答题。根据web题一般解题思路去解答此题。...

  • 实验吧隐写部分wp

    ①欢迎来到地狱 原题链接:http://www.shiyanbar.com/ctf/2010 下载文件,解压 打开...

网友评论

      本文标题:实验吧Wp之因缺思婷的绕过

      本文链接:https://www.haomeiwen.com/subject/nwssjctx.html