pikachu靶场之sql注入通关教程

Sql Inject(SQL注入)概述:SQL注入漏洞,可怕的漏洞。
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

  1. 按数据类型分类:

  1. 按注入提交方式分类:

  1. 按注入攻击支持类型:

1、数字型注入(POST)

请求携带的数据是数字,那么叫做数字型注入。

选中1查询,用burp抓包,在id=1后面添加 or 1=1#,然后放包,就可以查询所有数据:

2、字符型注入(GET)

字符串类型的输入方式;

直接在输入框内输入vince' or 1=1#,然后点击查询,就可以查询所有数据:

3、搜索型注入

在搜索型注入框中输入vi%' or 1=1#,点击查询,可看到所有信息:

4、xx型注入

在xx型注入的输入框内输入XX') or 1=1#,点击查询,查看到所有信息:

5、“insert/update”注入

1)insert:insert注入,就是前端注册(或者提交)的信息最终会被后台通过insert这个操作插入数据库,后台在接受前端的注册数据时没有做防SQL注入的处理,导致前端的输入可以直接拼接SQL到后端的insert相关内容中,导致了insert注入。

在insert/update注入中,先点击注册账号,然后点击submit提交,用burp抓包,在注册数据后面添加数据库查询语句('or updatexml(1,concat(0x7e,(select table_name from

information_schema.tables where table_schema='pikachu' limit 0,1)),0) or'),然后放包,就可以获取查询语句要查询的内容:

2)update:与insert注入的方法大体相同,区别在于update用于用户登陆端(或者修改数据的地方),登录端一般说的是修改最后一次登录时间等信息,insert用于用户注册端。

先注册个账号登录,点击修改个人信息,点submit提交,抓取提交数据包,在提交数据报的信息后面添加数据库查询语句(' or updatexml(0,concat(0x7e,(database())),0) or'),放包就可以看到查询语句要查询的内:

6、“delete”注入

一般应用于前后端发贴、留言、用户等相关删除操作,点击删除按钮时可通过Brup Suite抓包,对数据包相关delete参数进行注入,一般普通的用户是没有权限删除数据的,管理员才行。

在delete注入中的输入框中多次输入任意内容,点击submit提交,任选一个下面内容删除,鼠标停留在图中最下面一个删除时,左下角显示一个url链接(链接中id=61),直接在浏览器上的url中添加or updatexml(2,concat(0x7e,(database())),0),就查到指定命令内容:

7、Http Header注入

先在pikachu平台打开Http Header注入模块,点击提示查看登录帐号和密码,登陆后去使用Burp抓包,只留登录成功之后加载页面的那个get请求,把请求发送到Repeater模块中,去除User-Agent:,然后输入' 然后运行后观察MYSQL语法报错然后发现存在SQL注入漏洞。这时候可以设置payload。在User-Agent输入 payload Mozilla' or updatexml(1,concat(0x7e,database ()),0) or ' ,因为有些企业把user-agent等请求头键值对的数据也保存在了数据库里面。

8、Cookie注入

Cookie是网站为了识别用户身份来跟踪会话的,虽然Cookie是由后端生成的,但每次页面跳转,后端都回对前端的Cookie的信息进行验证,但如果后端获取Cookie后放在数据库中进行拼接,那么这也将是一个SQL注入点。在 ant[uname]=admin后添加一个’观察反馈的MYSQL的语法报错,发现了存在SQL注入漏洞,在设置'or updatexml (1,concat(0x7e,database()),0) or',就可以查询到命令查询内容:

9、布尔型盲注(base on boolian)

盲注,即在SQL注入过程中,SQL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注。

在布尔型盲注输入框中输入vince' and ascii(substr(database(),1,1))=112#,点击查询,使用burp抓包,将数据包发送到攻击器中,攻击类型选择激束炸弹,清除原有变量,将攻击器中database()后面第一个1设置为变量1,112设置为变量2,按图中配置变量1和变量2,然后然后点击开始攻击,就查到数据库名为7位,1-7位的ascii码值对应ascii中字符如下:

1-112 2-105 3-107 4-97 5-99 6-104 7-117

p i k a c h u -> pikachu

10、时间型盲注(base on time)

在时间型盲注输入框中输入vince' and if(ascii(substr(database(),1,1))=112,sleep(5),null)#,点击查询,使用burp抓包,其他步骤和布尔型盲注一样,(将数据包发送到攻击器中,攻击类型选择激束炸弹,清除原有变量,将攻击器中database()后面第一个1设置为变量1,112设置为变量2,按图中配置变量1和变量2,然后然后点击开始攻击,):

最终查到数据库名为7位,1-7位的ascii码值对应ascii中字符位pikachu;

11、宽字节注入

当我们把php.ini文件里面的magic_quotes_gqc参数设为ON时(php低版本才支持打开该开关,5.4版本及以上把魔法符合移除了),所有的'(单引号),"(双引号),(反斜杠)和null字符都会被自动加上一个反斜杠进行转义。

其中的URL编码是 %5C ,当我们在单引号前面加上%df的时候,最终就会变成 運',如果程序的默认字符集是GBK等宽字节字符集,则MYSQL用GBK的编码时,会认为 %df 是一个宽字符,%df'= %df%5c%27=運' ,一个汉字占了前面两个字节,那么就剩下%27了,它是单引号,有了单引号就好注入了。

先打开魔法符号,将php版本调到5.4以下,在宽字节对应输入框中输入字符vince,使用burp抓包,将数据包发送到重放器中,将数据中字符vince后面添加df’ or 1=1#,发送就可以查看所有数据信息:

展开阅读全文

页面更新:2024-06-16

标签:靶场   布尔   变量   字节   语句   漏洞   字符   数据库   教程   内容   数据   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top