结合order by 解CTF某题

Posted 可我浪费着我寒冷的年华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合order by 解CTF某题相关的知识,希望对你有一定的参考价值。

真tmd不容易

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

本来直接跳到最后看print "CTF{xxxx}";哪一行了,看到上面一位是弱类型。结果tmd才发现在16行就已经把数组给处理了,也就是很明白的说这不是弱类型。

后来想了想也只有注入了。可AttackFilter这个函数把该过滤的都过滤了。后来记得有个order by注入:http://www.cnblogs.com/xishaonian/p/7703486.html

等会儿再写 快下班了

以上是关于结合order by 解CTF某题的主要内容,如果未能解决你的问题,请参考以下文章

将串联与 ORDER BY 相结合

oracle SQL语句中结合order by子句使用rownum

使用 JPA 按嵌套属性排序时结合 DISTINCT 和 ORDER BY

Mysql 排序Order by与分页limit结合的数据异常问题

CTF-sql-group by报错注入

SQL预编译中order by后为什么不能参数化原因