pikachu靶场 :四、SQL注入

概述

在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。

一个严重的SQL注入漏洞,可能会直接导致一家公司破产!

SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞

  1. 对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
  2. 使用参数化(Parameterized Query 或 Parameterized Statement);
  3. 还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

数字型注入(post)

在提交页面随便选一个选项,进行查询,使用burp抓包。
在这里插入图片描述
因为是数字型,直接在后面加上真命题,不需要加单引号测试。
修改id参数为1 or 1=1 ,发送,得到返回的数据库数据。
在这里插入图片描述

字符型注入(get)

在页面输入1’ or ‘1’='1,进行查询,得到数据。
在这里插入图片描述

insert/update 注入

insert

点击注册,在用户那栏填入注入语句,如下爆出数据库名

wanku' or updatexml(1,concat(0x7e,database()),0) or'

在这里插入图片描述
在这里插入图片描述

update

正常登陆进来,在修改资料那里插入注入语句。

wanku' or updatexml(1,concat(0x7e,database()),0) or'

在这里插入图片描述
在这里插入图片描述

delete 注入

顺便留个言,有记录后,点击删除按钮,进行抓包。
在这里插入图片描述
发现参数是以get形式传递,把注入语句插在id之后,ctrl+U进行编码,send一下得到数据库名。

23 or updatexml+(1,concat(0x7e,database()),0)

在这里插入图片描述

sql 盲注

基于布尔

基于真假的盲注主要特征

  1. 没有报错信息
  2. 不管是正确的输入,还是错误的输入,都只有两种情况(可以看做 0 or 1)
  3. 在正确的输入下,后面跟 and 1=1 / and 1=2 进行判断

我们在皮卡丘平台一进行实验,输入下面的测试语句

kobe' and 1=1#
kobe' and 1=2#

发现一条正确执行,一条显示用户名不存在,说明后台存在 SQL 注入漏洞

基于时间

基于真假的盲注可以看到回显的信息,正确 or 错误
基于时间的注入就什么都看不到了,我们通过特定的输入,判断后台执行的时间,从而确定注入点,比如用 sleep() 函数
在皮卡丘平台一,无论输入什么,前端都是显示 “I don’t care who you are!”

我们按 F12 打开控制台,选到网络
在这里插入图片描述
然后我们输入下面的 payload 进行测试

kobe' and sleep(5)#

如果存在注入点,后端就会 sleep 5秒才会返回执行结果
在这里插入图片描述
看到上面的结果说明我们注入成功了

宽字节注入

当我们输入有单引号时被转义为\’,无法构造 SQL 语句的时候,可以尝试宽字节注入。
GBK编码中,反斜杠的编码是 “%5c”,而 “%df%5c” 是繁体字 “連”。

在皮卡丘平台中,将利用 BurpSuite 截获数据包,发送到 Repeater 中,在里面写入 payload
当我们用通常的测试 payload时,是无法执行成功的,下面的payload会报错

kobe' or 1=1#

因为在后台单引号会被转义,在数据库中执行时多了个反斜杠。
我们可以用下面的payload,在单引号前面加上 %df,让单引号成功逃逸

kobe%df' or 1=1#

在这里插入图片描述

发布了202 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43233085/article/details/104112994