Basic SQL
解题思路:
打开题目给的链接,发现是个搜索新闻的一个页面,上面的输入框可以帮助过滤关键字,比如
了解好主要功能后,开始进行解题
(1)在SQL注入测试界面的url输入http://123.207.149.64:23354/?id=1 , 发现页面无变化,说明可能存在注入点。
(2)接下来输入
发现结果正常显示
再输入
条件为假时,无显示内容。那就可以确定存在注入漏洞。
(3)在验证了漏洞确实存在之后,通过order by子句来测试有多少行数据。order by 4时无法正常显示,而order by 3时可以正常显示,得出每一行有三个值。
(4)既然发现了有3个值,那么尝试通过联合查询来获取一些敏感信息。
暴出所有库:
暴出表:
暴字段:
(5)暴数据,得到结果:
GET!
总结
(1)union注入流程
order by 确定列数->观察页面返回,选取可以显示数据的位置,进行下一步的注入->读库信息->读表信息->读字段->读数据
ps:union内部的select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。
默认情况,union操作符选取不同的值。如果允许重复的值,请使用union all
(2)值得一提的数据库用法
information_schema可以理解为是所有数据库的汇总,
比如我要
查询所有数据库
select * from information_schema;
查询news库当中的所有表名
select groupconcat(table_name) from information_schema.tables where table_schema=‘news’;
ps:group_concat函数返回一个字符串结果,该结果由分组中的值连接组合而成。