太惭愧了,今年一月份大火的thinkphp漏洞根本没关注,现在回过头来仔细分析下
开启debug模式
先放截图:
然后开始一步步来搞
php-storm
如何调试就不细说了
thinkphp
从这里开始启动,有机会一定要分析下thinkphp
是如何运行的
这里F8
一下先进入了一个autoload
函数,具体作用不是很清楚
进入run
函数之后,会先实例化一个$request
之后进行一些模块绑定的操作,之后进入self::routerCheck
函数,进行URL路由检测
而self::routerCheck
函数又会调用Route::check
函数
Route::check
函数中:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$url = str_replace($depr, '|', $url);
if (strpos($url, '|') && isset(self::$rules['alias'][strstr($url, '|', true)])) {
// 检测路由别名
$result = self::checkRouteAlias($request, $url, $depr);
if (false !== $result) {
return $result;
}
}
$method = strtolower($request->method());
// 获取当前请求类型的路由规则
$rules = self::$rules[$method];
// 检测域名部署
if ($checkDomain) {
self::checkDomain($request, $rules, $method);
}
这里最关键的就是$method = strtolower($request->method());
转过头来分析这个函数
1 | /** |
此时我们看到调用了__construct
方法
1 | /** |