[XNUCA 練習(xí)靶場(chǎng)](web)login (關(guān)于通過文件上傳與包含GetShell的一些思考)


login
(破解人數(shù):12)

描述:登陸后有驚喜
http://218.76.35.75:20115


關(guān)鍵代碼在于 :

<?php
$login=@$_POST['login'];
$password=@$_POST['password'];
if(@$login=="admin" && sha1(@$password)==$pwhash){
    include('flag.txt');
}else if (@$login&&@$password&&@$_GET['debug']) {
    echo "Login error, login credentials has been saved to ./log/".htmlentities($login).".log";
    $logfile = "./log/".$login.".log";
    file_put_contents($logfile, $login."\n".$password);
} 
?>
    <center>
        login<br/><br/>
        <form action="" method="POST">
            <input name="login" placeholder="login"><br/>
            <input name="password" placeholder="password"><br/><br/>
            <input type="submit" value="Go!">
        </form>
    </center>

可以看到這里會(huì)將登錄失敗的用戶名和密碼以以下的形式寫入到日志文件中

file_put_contents($logfile, $login."\n".$password);

在文件包含的時(shí)候在 include 的參數(shù)后添加了 .php
這種情況在php版本高于 5.3 的時(shí)候是無法使用 %00 來截?cái)嗟?br> 因此只能通過一些 php 的擴(kuò)展協(xié)議來構(gòu)造結(jié)尾為 .php 的包含參數(shù)

if(@$_GET['page'] != 'index'){
    include((@$_GET['page']?$_GET['page'].".php":"main.php"));
}

思考 :
如果這個(gè)題目的寫文件的代碼是這樣的 , 能否繼續(xù) get shell :

file_put_contents($logfile, $login." => (Login Failed) => ".$password);

分析 :
區(qū)別在于 , 原本用戶名和密碼之間添加了一個(gè)換行符 , 然后構(gòu)造成文件內(nèi)容再寫入文件
但是現(xiàn)在并不是一個(gè)簡(jiǎn)單的單字符 , 而是一個(gè)字符串

我想到了一個(gè)方法 , 前提是已知日志文件的構(gòu)造方式
如果我們可以拿到日志文件的結(jié)構(gòu) , 也就是已知

 => (Login Failed) => 

然后我們可以構(gòu)造一個(gè)壓縮包 , 這個(gè)壓縮包里面一個(gè)文件是這個(gè)字符串的內(nèi)容 , 另一個(gè)文件的內(nèi)容即為 webshell


測(cè)試 :

# 目錄結(jié)構(gòu)
upload ?? tree                                                                 
.
├── include.php
├── index.php
├── test
│   ├── content
│   ├── c.php
│   └── c.zip
└── upload

2 directories, 5 files
// index.php
<?php
$prefix = $_GET['prefix'];
$suffix = $_GET['suffix'];
$file = $_GET['file'];
$content = $prefix.' => (Login Failed) => '.$suffi;
echo $content;
file_put_contents('upload/'.$file, $content);
// include.php
<?php
include($_GET['file']);

接下來構(gòu)造 zip 包

image.png
image.png

可以看到如果使用 zip 去無密碼壓縮一個(gè)文本文件 , 這個(gè)文本文件的內(nèi)容是直接明文存儲(chǔ)的

image.png

因此我們只需要截取用戶名為字符串

%50%4b%03%04%0a%00%02%00%00%00%f7%75%0f%4b%78%64%d6%08%17%00%00%00%17%00%00%00%07%00%1c%00%63%6f%6e%74%65%6e%74%55%54%09%00%03%12%99%92%59%16%99%92%59%75%78%0b%00%01%04%00%00%00%00%04%00%00%00%00

之前的部分
然后密碼為之后的部分就可以了
其實(shí)基本上思路和之前的 WriteUP 類似
正常使用 zip 協(xié)議去包含這個(gè)文件即可

其實(shí)可以看到這里文件名的明文數(shù)據(jù)也是直接在 zip 文件里面的
那么事實(shí)上文件名也可以作為分隔符

最后經(jīng)過測(cè)試發(fā)現(xiàn) , 其實(shí)這個(gè)文件內(nèi)容并不需要和之前日志文件的分隔符相同 , 只需要內(nèi)容長(zhǎng)度相同即可

具體還需要了解 zip 壓縮文件的格式
成功寫入日志文件以后 , 如果日志文件 web 可以直接下載 , 可以下載下來測(cè)試一下
如果可以正常解壓 , 即可直接包含得到 shell


漏洞限制 :

總結(jié)一下這個(gè)漏洞利用的條件
1. 日志文件路徑已知
2. 日志文件首尾可控
3. 首尾長(zhǎng)度無限制
4. 文件內(nèi)容中不可控的區(qū)域長(zhǎng)度已知

參考資料 :

應(yīng)該還有很多的 php 協(xié)議可以用來繞過這些限制
等以后有時(shí)間再慢慢研究

https://secure.php.net/manual/zh/wrappers.php

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旅赢,更是在濱河造成了極大的恐慌裂明,老刑警劉巖壹士,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筑公,死亡現(xiàn)場(chǎng)離奇詭異颓鲜,居然都是意外死亡一铅,警方通過查閱死者的電腦和手機(jī)陕贮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潘飘,“玉大人肮之,你說我怎么就攤上這事〔仿迹” “怎么了戈擒?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)艰毒。 經(jīng)常有香客問我筐高,道長(zhǎng),這世上最難降的妖魔是什么丑瞧? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任柑土,我火速辦了婚禮,結(jié)果婚禮上绊汹,老公的妹妹穿的比我還像新娘稽屏。我一直安慰自己,他們只是感情好西乖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布狐榔。 她就那樣靜靜地躺著坛增,像睡著了一般。 火紅的嫁衣襯著肌膚如雪薄腻。 梳的紋絲不亂的頭發(fā)上收捣,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音庵楷,去河邊找鬼坏晦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫁乘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播球碉,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蜓斧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了睁冬?” 一聲冷哼從身側(cè)響起挎春,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豆拨,沒想到半個(gè)月后直奋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡施禾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年脚线,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弥搞。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邮绿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出攀例,到底是詐尸還是另有隱情船逮,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布粤铭,位于F島的核電站挖胃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梆惯。R本人自食惡果不足惜酱鸭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望加袋。 院中可真熱鬧凛辣,春花似錦幢哨、人聲如沸喉脖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)智听。三九已至,卻和暖如春日缨,著一層夾襖步出監(jiān)牢的瞬間声搁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工寿谴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锁右,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓讶泰,卻偏偏與公主長(zhǎng)得像咏瑟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痪署,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理码泞,服務(wù)發(fā)現(xiàn),斷路器狼犯,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言瓢姻,發(fā)作 oo-boon-too 的音祝蝠。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,160評(píng)論 9 467
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1汹来、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,055評(píng)論 1 19
  • 這短短一個(gè)月的時(shí)間续膳,便做了很多個(gè)決定。離職收班,找工作坟岔,搬家,旅游摔桦,好像每一個(gè)決定都是心血來潮的社付,看似不經(jīng)意期間其實(shí)都...
    蒹葭蒼蒼Y閱讀 179評(píng)論 0 0
  • 超級(jí)速算名人堂 — 40 雄鷹 入選時(shí)間:2015年9月26日 入選級(jí)別:787級(jí) 入選理由:廣州-雄鷹,一個(gè)平凡...
    V5特湘葉葉閱讀 132評(píng)論 0 0