0
点赞
收藏
分享

微信扫一扫

[PHP]ThinkPHP5.0.9SQL注入分析


ThinkPHP5.0.9SQL注入分析

虽然有点鸡肋但是思路还是值得学习,首先写个控制器,这个Id一定要大写I

<?php
namespace app\index\controller;

class Index
{
public function index()
{
$id = input("id/a");
$data = db("users")->where("Id","in",$id)->select();
dump($data);
}
}

给出payload​​?id[0,updatexml(0,concat(0xa,user()),0)]=1​​之后开始调试分析

我们首先进入where函数,跟进parseWhereExp,发现是参数绑定的不是重点

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定

之后我们进入select函数,跟进发现也是参数绑定的部分

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_02

接下来我们跟进

[PHP]ThinkPHP5.0.9SQL注入分析_xml_03

只有这两个是有效函数

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_04

继续跟进

[PHP]ThinkPHP5.0.9SQL注入分析_xml_05

直接跳过了

[PHP]ThinkPHP5.0.9SQL注入分析_php_06

到我们的parseWhere了

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_07

这个主要是获取数据库当中字段类型

[PHP]ThinkPHP5.0.9SQL注入分析_php_08

接下来我们继续跟进parseKey

[PHP]ThinkPHP5.0.9SQL注入分析_php_09

我们继续跟进

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_10

华点TP函数用错了,无关紧要

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_11

注意这里的参数拼接,就是我们的利用点,完全没有过滤

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_12

继续往下

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_13

最终返回

`Id` IN (:where_Id_in_0,updatexml(0,concat(0xa,user()),0))

之后返回

[PHP]ThinkPHP5.0.9SQL注入分析_xml_14

我们接着跟进

[PHP]ThinkPHP5.0.9SQL注入分析_参数绑定_15

我很懵逼,没有执行过程啊!!!却执行了,复现分析完毕,至于为什么执行了,希望有知道的师傅带带

[PHP]ThinkPHP5.0.9SQL注入分析_xml_16


举报

相关推荐

0 条评论