http://106.75.106.203:1515/mysql
svn文件泄露sql
使用dvcs-ripper将泄露文件下载下来:session
进行代码审计:svn
关键代码:测试
$name = str_replace("'","", trim(waf($_POST["name"])));fetch
if (strlen($name) >11){spa
echo("<script>alert('name toolong')</script>");blog
}else{ip
$sql = "select count(*) from t_info where username ='$name' or nickname = '$name'";io
echo $sql;
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if ($row[0]){
$_SESSION['hat']= 'black';
echo 'good job';
}else{
$_SESSION['hat']= 'green';
}
name字段长度不能大于11,只要查询语句返回不为空,就执行:
$_SESSION['hat']= 'black';
echo 'good job';
关键代码:
if(isset($_SESSION['hat'])){
if($_SESSION['hat']=='green'){
output("<imgsrc='green-hat-1.jpg'>",10);
}else{
output("<imgsrc='black-fedora.jpg'>",1);
echo $flag;
}
若是SESSION中存在hat字段,而且其值不等于green,就输出flag,而设置session的地方就是第一处关键代码所在的地方。
而咱们不知道哪一个name值返回不为空,猜想存在注入,burp抓包:
发现name字段能够注入,不过过滤了不少,经测试发现过滤了空格,%df也被替换了,尝试使用注释绕过,提示good job,说明payload有效,故最终payload为:or /**/1=1#'
在login页面输入框中输入 or/**/1=1#' 即获得flag。