解题连接http://ctf5.shiyanbar.com/web/pcat/index.php
查看源代码
<form action="" method="post"><br/><inputname="uname"type="text"/><br/><inputname="pwd"type="text"/><br/><inputtype="submit" /><br/></form><br/><!--source: source.txt--><br/> |
查看http://ctf5.shiyanbar.com/web/pcat/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);
?>
发现过滤了不少东西,查询语句为
$sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
第一层
if (mysql_num_rows($query) == 1)
Mysql知识点:limit
例如limit 1 就是从第一条开始查,limit 2 从第二条开始查。
第二层
if($key['pwd'] == $_POST['pwd'])
当pwd查出来的为空就行了
Mysql知识点:group by pwd with rollup
转载http://blog.youkuaiyun.com/id19870510/article/details/6254358点击打开链接
发现新建的第二条为空。
如果我们希望再显示部门的平均值和全部雇员的平均值,普通的 GROUP BY 语句是不能实现的,需要另外执行一个查询操作,或者通过程序来计算。如果使用有 WITH ROLLUP 子句的 GROUP BY 语句,则可以轻松实现这个要求:
Mysql知识点:offset
如limit 1 offset 1就是从第一条开始查的第一条
limit 1 offset 2就是从第一条开始查的第二条
Mysql知识点:#号
#号的作用是注释掉后面语句,因为响应是uname=&pwd=
所以要将后面的&pwd=注释掉
所以payload为
' or 1=1 group by pwd with rollup limit 1 offset 2#