绕过D盾IIS防火墙:SQL注入攻防策略及实战姿势

需积分: 0 6 下载量 7 浏览量 更新于2024-08-05 收藏 464KB PDF 举报
本文主要探讨的是如何在Windows 2003服务器环境下,使用IIS防火墙D盾进行SQL注入防御时的测试和绕过策略。D盾IIS防火墙主要针对GET、POST和COOKIE请求,并支持白名单设置,以防止恶意SQL注入攻击。作者针对三种不同环境——IIS+PHP+MySQL、IIS+PHP+MSSQL以及IIS+ASP/ASPX+MSSQL,进行了深入的实验和分析。 首先,作者提到白名单策略,这是基本的防护措施,但通过PHP中的PATH_INFO特性,攻击者可以利用URL路径的额外部分绕过过滤,例如在URL后面添加任意地址如`/admin.php?id=1unionselect1,2,schema_namefrominformation_schema.SCHEMATA`,即使在GET、POST和COOKIE请求中,这个技巧也能生效。 第二个绕过姿势涉及使用Mysql中的特殊字符,尤其是百分号编码的空格 `%a0`,攻击者巧妙地将其与`select`关键字结合,导致防火墙未能识别并阻止这种注入攻击。通过在SQL语句中插入`\N`,作者发现这是一种在unionselect检测前的潜在绕过方法,同时也适用于selectfrom检测。 在IIS+ASP/ASPX+MSSQL环境中,尽管防火墙策略更为复杂,但通过理解SQL注入攻击的原理,如利用路径变量和特殊字符,攻击者依然能找到策略来避开D盾的防护。这表明在实际应用中,仅仅依赖白名单和常规防御机制可能不足以抵挡高级的SQL注入攻击,开发者和安全专家需要不断更新防御手段并持续测试以应对不断演变的威胁。 本文提供了关于如何在IIS防火墙D盾下进行SQL注入测试,以及通过技术手段绕过其防御机制的方法,这对于理解和提升Web应用程序的安全性具有重要参考价值。同时,也提醒了开发者在设计和实施安全策略时,应注重动态防御和定期审计,以适应不断变化的威胁态势。

/// programmable block decoder to support protocols such as 64b66b, 64b67b, 128b130b, 128b132b module mppcs_block_dec #( parameter DW = 32, /// max. data width parameter DATA_WIDTH = 32, parameter HW = 4, /// max. header width 4 parameter ND = 16 /// max. number of data per block parameter DATA_PER_BLOCK = 64, ) ( /// ingress data interface input logic [DW-1:0] data_in, /// ingress data before header extraction input logic in_valid, /// ingress flow control output logic in_ready, /// ingress flow control /// egress data interface output logic block_start, /// block synchronization output logic [HW-1:0] header_out, /// block header output logic [DW-1:0] data_out, /// egress data after header extraction output logic out_valid, /// egress flow control input logic out_ready, /// egress flow control /// control options input [$clog2(DW)-1:0] msb_data, /// number of data bits - 1 input [$clog2(HW)-1:0] msb_header, /// number of header bits - 1 input [$clog2(ND)-1:0] msb_num_data, /// number of data per block - 1 output logic sync_track, /// block sync tracking signal input logic sync_mode, /// 0: use external sync directly, 1 : use internal sync after assertion of external sync input logic [3:0] sync_offset, /// offset between sync and block start signal input logic sync_start, /// external sync input logic enable, /// 0: clock-gated, 1: mission mode input logic bypass, /// 1: data pass-through without header insertion /// clock & reset input clk, input rst ); /// mask unused bits in header and data wire [DW+1 :0] data_msk = {({{(DW-1){1'b0}},1'b1}<<msb_data),1'b0} - 1'b1; wire [DW-1:0] data_eff = data_msk[DW-1:0] & data_in; wire [HW+1 :0] header_msk = {({{(HW-1){1'b0}},1'b1}<<msb_header),1'b0} - 1'b1; /// block synchronization wire block_sync_en = enable & ~bypass; logic [$clog2(ND)-1:0] cnt_block_data,cnt_block_data_nxt; logic sync_start_lat; always @(posedge clk or posedge rst) begin if (rst) sync_start_lat <= 0; else sync_start_lat <= sync_start; end

179 浏览量