Sqli-labs5

Less-12 基于错误的双引号POST型字符型变形的注入

POST-Error Based-Double Quotes-String-with twist

首先尝试username+单引号,无回显

再尝试username+双引号,报错回显

image-20220130104206668.png

可以看出对输入变量还加了括号,故使用username+")来注入

image-20220130104342945.png

成功返回我们所需信息,接下来和Less-11相同

Less-13 单引号POST型字符型变形双注入

POST-Double Injection-Single Quotes-String-with twist

联想到Less-5中get方式注入,有几种方法

法一 布尔盲注

首先我们尝试如下,可以看出需要+')来闭合,同时有报错回显

image-20220130105601706.png

如果我们的语句正确,是无法显示的

image-20220130105804264.png

所以我们要通过报错信息来获取数据库各种信息

需要注意的是,这里我们可能不知道用户名,所以要想正确需要使用or,如图

image-20220130110257182.png

提示我们登陆成功,说明数据库长度为8,以此类推来个盲注

法二 时间延迟注入

同上,换成if(length(database())=8,sleep(5),1),如果出现延迟,说明正确

法三 双注入法(题目提示)

我们采用之前Less-5的模板即可,可以看到出现我们的数据库名。接下来想知道啥就改concat里的第一个参数就可

image-20220130110951490.png

Less-14 单引号POST型字符型变形双注入

POST-Double Injection-Single quotes-String-tiwst

Less-13、14标题一样,做法差不多,试了几下,发现不需要括号,用双引号即可闭合

image-20220130113817024.png

Less-15 基于布尔/时间延迟的单引号POST型盲注

POST-Blind- Boolian/time Based- Single quotes

都可以采用Less-13的方法

Less-16 基于布尔/时间延迟的双引号POST型盲注

POST-Blind- Boolian/Time Based- Double quotes

Less-15改成双引号+)即可

Less-17 基于错误的更新查询POST注入

POST-Update Query- Error based - String

这个很明显,只有你输入的用户名在数据库中存在才可以修改,密码无所谓,改后数据库也会发生相应变化

这里就要对username动手了,需要我们对mysql的数据更新语法有所了解

我先去瞅瞅源码长啥样,下面是对数据输入的处理

function check_input($value)
    {
    if(!empty($value))
        {
        // truncation (see comments)
        $value = substr($value,0,15);
        }

        // Stripslashes if magic quotes enabled
        if (get_magic_quotes_gpc())
            {
            $value = stripslashes($value);
            }

        // Quote if not a number
        if (!ctype_digit($value))
            {
            $value = "'" . mysql_real_escape_string($value) . "'";
            }

    else
        {
        $value = intval($value);
        }
    return $value;
    }

// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))

{
//making sure uname is not injectable
$uname=check_input($_POST['uname']);  

$passwd=$_POST['passwd'];

可以看到对输入的uname进行了一堆复杂的验证,包含在check_input函数中

php get_magic_quotes_gpc() stripslashes()和addslashes()的关系_blue5blue的博客-CSDN博客

首先判断是否为空,不为空截取前十五个字符,接着get_magic_quotes_gpc函数判断解析用户提示的数据,如包括有post、get、cookie过来的数据增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误,这时magic_quotes_gpc = On,添加了反斜杠,这时候有需要去除,使用stripslashes

总之经过一连串处理,我们的SQL注入几乎不可能了,但是可以看到他没有处理password的输入,所以这次从password处注入

一时半会搞不定这个双注入法,但是看到了一篇很好的文章,明天学习下

Sqli-labs之Less-17_→_→-CSDN博客&spm=1018.2226.3001.4450)

最后修改:2022 年 02 月 03 日
如果觉得我的文章对你有用,请随意赞赏