参考:2018护网杯-web部分题解
本文讲解其中用到的相关知识点。
easy tornado
hint.txt
md5(cookie_secret + md5(filename))
要得到flag的filename已经提示,即现在只要获取tornado的cookie_secret就可以了
运用模板注入:
http://49.4.78.81:30980/error?msg={{handler.settings}}
记忆:handler.settings存放cookie_secret 哦~
嗯嗯,因为:即使看源码目前我也无法看出是handler.settings...
easy laravel
- laravel:PHP开发框架
- SQL注入:
萌新练习网站:https://ringzer0team.com
wp:https://xz.aliyun.com/t/2298
admin' union select 1,(select password from users limit 0,1),3,4,5#
limit 为偏移量
其他...正在研究中
2.拿管理员token
admin' union select 1,(select token from password_resets limit 1,1),3,4,5#
token:计算机身份认证中的临时令牌
- 使用路径重置密码:
http://49.4.78.81:31250/password/reset/1c9d0f377a75dd48abaa90dd7fa4eb35653da39561d6f9c33bdb14a8a0849616
reset/这里是token - PHP反序列化漏洞
参考:PHP反序列化原理分析
1.serialize() 函数用于序列化对象或数组,并返回一个字符串。
- 魔术方法
参考:PHP16个魔术方法详解
PHP以两个下划线__开头的方法称为魔术方法(Magic methods)
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用
3.如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞
4.如何在不使用php函数unserialize()的前提下,触发序列化呢?phar://
参考:初探phar://
利用条件:如file_exists(),fopen(),file_get_contents(),file()等文件操作的函数。要有可用的魔术方法作为“跳板”。文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤。
实现过程:...先见链接好吗~
LTshop
- 条件竞争
参考:
Web中的条件竞争漏洞
用burp实现条件竞争
解题详细操作
条件竞争:发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
实现:多线程访问,数据库update一次的时间内update了多次,导致数据出现错误
多线程访问,可以自己写脚本,也可以用burp:多线程,null payloads
- 整形溢出:具体需要看《计算机组成原理》
但是这样还不够,发现辣条之王有填写兑换数,尝试整数溢出
因为最长为longlong,即存在2^64,又因为5包大辣条换一包辣条之王,故最多可换3689348814741910323包辣条之王,溢出再加一包,即为3689348814741910324包,输入后溢出,成功获得足够数量的Flag