|
|
|
联系客服020-83701501

利用MySQL隐形类型转换绕过WAF

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
把持MySQL隐形类型转换绕过WAF 网站操纵群体驳回基于表单的身份验证动作(页面雏形如下图所示),处置惩罚逻辑就是将表单中提交的 用户名和密码传递到后台数据库去盘诘,并按照盘诘后果果断是否颠末身份验证。关于LAMP架构的网站操纵而言,处置惩罚逻辑驳回PHP,后台数据库驳回 MySQL。而在这一处置惩罚过程,因为各类处置惩罚不善,会导致很多紧急的裂痕,撤阑珊口令与暴力破解,最常见的就是SQL注入。SQL注入概略在SQLNuke——mysql 注入load_file Fuzz工具看到如何把持,而本篇博客的重点是把持MySQL隐形的类型转换绕过WAF的检测。 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 上面把持实例来默示这一过程。 实例包罗2个剧本login.html与login.php,1张寄存用户名与密码的member.user表 (1)表单login.html Default
12345678910111213141516 <html><body><form id="form1" name="form1" method="post" action="login.php"><label>UserName<input name="user" type="text" id="user"/></label><br/><label>Password<input name="password" type="text" id="password"/></label><br/><label><input name="login" type="submit" id="login" value="Login"/></label></body></html>

(2)认证处置惩罚login.php
Default
12345678910111213141516171819202122232425262728293031323334 <?phpif(isset($_POST["login"])){$link = mysql_connect("localhost","root","toor") or die ("cannot connect database".mysql_error()); mysql_select_db("member") or die ("cannot select the db"); $query = "select * from user where user='".$_POST["user"]."'and password='".md5($_POST["password"])."'"; echo $query."<br/>"; $result = mysql_query($query) or die ("the query failed:".mysql_error());echo "<br/>"; $match_count = mysql_num_rows($result); if($match_count){while($row = mysql_fetch_assoc($result)){echo "<strong>User: </strong>".$row["user"]."<br/>";echo "<strong>Password: </strong>".$row["password"]."<br/>";echo "<br/>";}}else { echo "Wrong User or password <br/>"; echo '<a href="http://10.1.36.34/login.html">Back</a><br/>';} mysql_free_result($result); mysql_close($link);}

留意血色字体部门,为用户输入的用户名和密码,没有中止任何过滤就传入到数据库中去中止盘诘. 该剧本将盘诘字符串及盘诘后果默示在页面中以供直观的演示SQL盘诘后果。

(3)member.user 自身看一张常见的用户表user表,由两个字段构成user用户名和password字段。 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 表中搜罗8行数据 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 很邃晓这是一段有SQL注入的倒叙,接上来咱们来看看上面这些有趣的盘诘后果 (1) 输入用户名 a’+’b# 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 盘诘后果如下图所示 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体

?(2)输入用户名45a’+’b’#

在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 ?产生以上后果的原因是算术把持符+的出现将字符型的user转换为了数值性的user dani,tanjiti,dani123,0dani 对应的数值为0 123dani,123tanjiti对应的数值为123 45dani,045tanjiti对应的数值为45 ‘a’+’b’对应数值为0+0=0,会把类型转换后为0的用户名搜寻出来 ’45a’+’b’对应数值为45+0=45,会把类型转换后为45的用户名搜寻出来 除了+号,其余算术把持符号也会产生类型的类型转换,比如MOD,DIV,*,/,%,-, ?(3)输入用户名a’MOD’1’# 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 ?‘a’MOD’1’对应的数值为0 MOD 1 =0,会把user对应数值为0的搜寻出来 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 (4)输入用户名‘-”# 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体

”-”对应的数值为0 -0 =0,会把user对应数值为0的搜寻出来

在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 (5)输入用户名‘/’1’# 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 ”/’1’对应的数值为0 /1 =0,会把user对应数值为0的搜寻出来 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 bit把持符&,|,^,<< ,>>也有异样的效果 (6)输入用户名a’&’b’# 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 ?‘a’&’b’对应的数值为0&0 =0,会把user对应数值为0的搜寻出来 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 对应WAF防火墙而言,当输入’ or 1=’1 时,ModSecurity防火墙会报错(我没有实行过ModSecurity,博客中有介绍) 在注入中利用MySQL隐形的类型转换绕过WAF检测 - 碳基体 - 碳基体 而上面的实例则概略绕过防火墙. 总的来说,把持MySQL隐性的类型转换来绕过WAF对SQL注入的检测是蛮有想法的。 参考: http://vagosec.org/2013/04/mysql-implicit-type-conversion/ 文章水印略大 自身若看不清概略到原文处检查:http://danqingdani.blog.163.com/blog/static/186094195201331854938182/ 本文转自碳基体博客由网络安全攻防研讨室(www.91ri.org)信息安全小组收集整理,转载请阐明缘故。

数安新闻+更多

证书相关+更多