这题我一开始是在攻防世界做的,但是不知道今天靶场又抽什么风了。。。。反正两个靶场配置有点不一样,但是出入不是很大,BUUCTF需要提前手动利用管理员邮箱reset_password一下,攻防世界不需要
打开场景,审计页面源码,发现源码地址直接给出来了,非常的简单粗暴啊
https://github.com/qazxcv123/easy_laravel
建议把源码下下来,自己搭个环境慢慢看,不然不方便。那就看源码呗,先看路由,mvc的入口点
哦对了先说一下,larvel是一个PHP的web框架
在一个个尝试路由的时候发现自动跳转到了登录界面,自然而然的想到了sql注入?
找登录逻辑,在app文件夹里发现了不少东西,有普通用户和admin两套逻辑,细节后面再说。在全局查找DB关键字的时候在NoteController里发现了
$notes = DB::select("SELECT * FROM `notes` WHERE `author`='{$username}'");
很明显这是有回显的地方,同时还翻到了
reset_admin_password,
$this->query("UPDATE `users` SET password='$passwd'");
就差把越权两个字写在脸上了,登录注册倒是没找到什么可以利用的地方
下面就根据这个逻辑继续走,大致就是先注册一个用户,然后利用NoteController里的SQL注入进行越权,我们可以读到的是admin的note,其他的东