护网杯2018 easylaravel
easylaravel
robots.txt没啥东西
注释给了源码地址,下下来审计
/routes/web.php 查看路由
包里有composer.json 先composer install安装一下相关的包依赖(需要先安装composer)
安装完后项目根目录会有vendor文件夹 composer.lock文件。(因为网络问题一直没安装完。。。也就没composer.lock文件,后来换了阿里云的源才搞定,菜鸟教程那写着的国内源一直不行,不知道咋回事),安装完后才能得到完整源码,毕竟是用的laravel框架
php artisan route:list 查看一下已经定义的路由
因为我扫的时候看到一个upload 但自己注册的账户没有 这个功能 所以先去注册登录那看看怎么搞到admin账户,这里用户名是随便的,主要是邮箱地址
app/Http/Middleware/AdminMiddleware.php 找到admin用户邮箱
但不能用重复邮箱注册,好在有一个重置密码功能
这里点击后会发送一个token到数据库
访问Illuminate\Foundation\Auth\SendsPasswordResetEmails;
再到\Illuminate\Contracts\Auth\PasswordBroker
改密码的时候也需要这个token
\database\migrations\2014_10_12_100000_create_password_resets_table.php
/app/Http/Controllers/NoteController.php 发现有一个sql注入
SELECT * FROM
notesWHERE
author='admin' or 1=1#'
通过恶意构造后 回显(正常是无回显的)
nginx是坠吼的 ( 好麻烦,默认配置也是坠吼的
这里可以注入得到用户表中的密码,但是是经过加密处理的,无法解开还是搞不到密码
但可以通过这个sql注入搞到数据库中用来修改密码的token
test' union select 1,(select token from password_resets where email='admin@qvq.im'),3,4,5#
然后访问/password/reset/token
登录成功后访问flag页面
flag | App\Http\Controllers\FlagController@showFlag 本来应该直接打印处flag的
现在的flag是空的
Blade 视图文件使用 .blade.php 文件扩展并存放在 resources/views 目录下
但是还有一个上传功能,题目上传页面代码可通过file_exists(也就是页面中的check功能)使用phar://协议触发反序列化,用pop链删除这个编译后的模板文件
需要达成的条件:
- 1.找到可以用来删除文件的函数(unlink函数),并构造pop链
- 2.需要知道编译后的文件名
find . -name "*.php" | xargs grep "__destruct"
vendor/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php
新建SwiftByteStream_TemporaryFileByteStream
类,将要删除的路径写入,生成phar文件,利用phar://伪协议访问该文件,反序列化结束时自动调用__destruct()也就调用了unlink函数删除文件。
下面就是找到缓存文件的路径
laravel视图缓存没有及时更新:
vendor/laravel/framework/src/Illuminate/View/Compilers/Compiler.php
编译后文件的路径由两部分构成第一部分是模板的绝对路径path,第二部分是是缓存路径,又因为缓存路径为/storage/framework/views/
根据sql注入那的提示,默认配置是最好的,得到path为/usr/share/nginx/html/resources/views/auth/flag.blade.php的sha1值
最终的路径为:
/usr/share/nginx/html/storage/framework/views/34e41df0934a75437873264cd28e2d835bc38772.php
生成phar的脚本:https://github.com/CTFTraining/huwangbei_2018_easy_laravel
easy_laravel_exp_gen.php
把生成的gif文件上传
然后去/files check一下 要更改path路径才能触发反序列化,存储的目录为storge/app/public
再次访问flag页面
参考:
https://www.cnblogs.com/tr1ple/p/11044313.html
https://xz.aliyun.com/t/2912
https://www.dazhuanlan.com/2019/12/24/5e01ca0844f13/
护网杯2018 easylaravel相关推荐
- [护网杯 2018]easy_tornado WriteUp
打开环境发现有三个链接 分别点击 分别得到 flag.txt welcome.txt 以及hints.txt 看到网址后面有 file/filename= 等字样,以及出现的md5加密函数 初步猜测f ...
- [护网杯 2018]easy_tornado
题目打开有三个链接 点第一个发现 第三个 猜测这里的filehash就是md5加密得到的,我们需要找到cookie_secret 在第二个链接中 有个render,而且题目是easy_tornado, ...
- [护网杯 2018]easy_tornado 1
考点: 1.SSTI(务器端模板注入) 2.模板中的Handler 做之前先全点一遍看看里面有啥 flag.txt: 看到一个fllllllllllllag,正好有个filename参数,带进去看看: ...
- 【BUUCTF】web 之 [护网杯 2018]easy_tornado
打开出现三个目录: /flag.txt /welcome.txt /hints.txt 依次点开查看 flag.txt 告诉我们flag在哪里 点开welcome.txt 显示 render 之后百度 ...
- 强网杯2018 - nextrsa - Writeup
强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...
- awd的批量脚本 pwn_[原创]第一届护网杯线下决赛awd之shell多解
前言 好久不打比赛,顺便来北京实习就参加了护网杯.排名虽然有所提高但还是被各种大表哥吊打.(和企业参赛简直痛苦)这里带来决赛中awd比赛pwn题shell的两种漏洞利用方式. 程序保护 保护全开 程序 ...
- 强网杯 2018 opm
强网杯 2018 opm 前言 这篇WP是强网杯过去了很久之后才出的, 参考的是极目楚天舒师傅的博客, 这位师傅是一位CTF老赛手, 最近复出.由于图片中不能CTRL+F出文字, 本文章尽量避免使用图 ...
- 2018护网杯第一场 web easy tornado LTshop超详细解答
easy tornado 这个tornado是一个python的模板,在web使用的时候给出了四个文件,可以访问,从提示中和url中可以看出,访问需要文件名+文件签名(长度为32位,计算方式为md5( ...
- 2018护网杯内存取证
作者:Swback 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 #查看profi ...
最新文章
- 华为云NP考试题库_华为认证网络工程师怎么考
- Apache2.4+Tomcat7集群搭建
- 深度学习难分样本挖掘(Hard Mining)
- 《2018中国大数据发展指数报告》发布:广东、上海、贵州、北京、重庆领先
- centos在线安装svn
- mysql下sql语句 update 字段=字段+字符串
- Spring Cloud Bus 消息总线介绍
- 开源社区ITGeek介绍
- 八十五、store数据,actionCreators 与 constants 的拆分和redux-immutable的使用
- VTK:相互作用之MouseEventsObserver
- SAP CRM里Interaction Object是个什么东东
- EXCEL怎么打20位以上的数字?
- python科学坐标图绘制的四个要素_Python3.0科学计算学习之绘图(四)
- 7-2 错误处理概念
- android把2变成02_【Android】学习札记第2章之数组二(Arrays工具类)
- 计算机定义函数求出以下,求大神看一下 计算机提示 函数定义不合法
- 基于CSS class的事件监听管理机制 (转)
- 关于 extern inline
- 人体姿态估计综述 2020最全
- 【Java开发】之配置文件的读取