【學(xué)習(xí)筆記16】buu [SUCTF 2019]Pythonginx

打開一看發(fā)現(xiàn)給了一堆代碼這樣看不方便我們就去查看源碼

? ? ? ? @app.route('/getUrl', methods=['GET', 'POST'])

def getUrl():

? ? url = request.args.get("url")

? ? host = parse.urlparse(url).hostname

? ? if host == 'suctf.cc':

? ? ? ? return "我扌 your problem? 111"

? ? parts = list(urlsplit(url))

? ? host = parts[1]

? ? if host == 'suctf.cc':

? ? ? ? return "我扌 your problem? 222 " + host

? ? newhost = []

? ? for h in host.split('.'):

? ? ? ? newhost.append(h.encode('idna').decode('utf-8'))

? ? parts[1] = '.'.join(newhost)

? ? #去掉 url 中的空格

? ? finalUrl = urlunsplit(parts).split(' ')[0]

? ? host = parse.urlparse(finalUrl).hostname

? ? if host == 'suctf.cc':

? ? ? ? return urllib.request.urlopen(finalUrl).read()

? ? else:

? ? ? ? return "我扌 your problem? 333"

源碼給的不太全,但是給了兩個(gè)提示,這時(shí)候我才想起來好像一開始開環(huán)境的時(shí)候弄诲,給了題目網(wǎng)站源碼的位置挚冤,直接去github上找到源碼

from flask import Flask, Blueprint, request, Response, escape ,render_template

from urllib.parse import urlsplit, urlunsplit, unquote

from urllib import parse

import urllib.request

app = Flask(__name__)

# Index

@app.route('/', methods=['GET'])

def app_index():

? ? return render_template('index.html')

@app.route('/getUrl', methods=['GET', 'POST'])//這以上就是聲明一些路由和傳參方式?jīng)]什么太大的用處

def getUrl():

? ? url = request.args.get("url")//接收傳進(jìn)來的url

? ? host = parse.urlparse(url).hostname//主要是用于解析url中的參數(shù)? 對(duì)url按照一定格式進(jìn)行 拆分或拼接?

? ? if host == 'suctf.cc':

? ? ? ? return "我扌 your problem? 111"

? ? parts = list(urlsplit(url))

? ? host = parts[1]

? ? if host == 'suctf.cc':

? ? ? ? return "我扌 your problem? 222 " + host

? ? newhost = []//以上兩個(gè)if判斷就是檢測(cè)傳進(jìn)來的是不是suctf.cc'济竹,如果是就報(bào)錯(cuò)

? ? for h in host.split('.'):

? ? ? ? newhost.append(h.encode('idna').decode('utf-8'))

? ? parts[1] = '.'.join(newhost)

? ? #去掉 url 中的空格

? ? finalUrl = urlunsplit(parts).split(' ')[0]

? ? host = parse.urlparse(finalUrl).hostname

? ? if host == 'suctf.cc'://這里判斷到如果為suctf.cc就可以執(zhí)行讀操作

? ? ? ? return urllib.request.urlopen(finalUrl, timeout=2).read()

? ? else:

? ? ? ? return "我扌 your problem? 333"

if __name__ == "__main__":

? ? app.run(host='0.0.0.0', port=80)

分析由于三個(gè)if判斷都是檢驗(yàn)是否為suctf.cc趴荸,但是我們想要得到flag還要繞過前兩個(gè)if晌梨,只執(zhí)行最后一個(gè)if這時(shí)候就看到這樣一句話

newhost.append(h.encode('idna').decode('utf-8'))

意思是將域名每個(gè)部分進(jìn)行idna編碼后钙姊,再utf-8解碼毯辅,所以我們的思路就是修改一下suctf.cc的格式讓他最后可以變?yōu)閟uctf.cc就可以了這時(shí)候就可以利用?來繞過,這樣就可以進(jìn)行文件讀取煞额,那首先來讀一下nginx的配置文件

file://suctf.c?sr/local/nginx/conf/nginx.conf

(后來看到有的大佬說的另一種繞過方式是利用?來代替c及進(jìn)行繞過)

找到了flag的位置思恐,就在fffffflag里那就修改一下payload直接去讀取這個(gè)文件

file://suctf.c?sr/fffffflag

后來又查找了一些資料才知道這是blackhat議題之一HostSplit-Exploitable-Antipatterns-In-Unicode-Normalization,blackhat這個(gè)議題的PPT鏈接如下:

https://i.blackhat.com/USA-19/Thursday/us-19-Birch-HostSplit-Exploitable-Antipatterns-In-Unicode-Normalization.pdf

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膊毁,一起剝皮案震驚了整個(gè)濱河市胀莹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌媚媒,老刑警劉巖嗜逻,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缭召,居然都是意外死亡栈顷,警方通過查閱死者的電腦和手機(jī)逆日,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萄凤,“玉大人室抽,你說我怎么就攤上這事∶遗” “怎么了坪圾?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惑朦。 經(jīng)常有香客問我兽泄,道長(zhǎng),這世上最難降的妖魔是什么漾月? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任病梢,我火速辦了婚禮,結(jié)果婚禮上梁肿,老公的妹妹穿的比我還像新娘蜓陌。我一直安慰自己,他們只是感情好吩蔑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布钮热。 她就那樣靜靜地躺著,像睡著了一般烛芬。 火紅的嫁衣襯著肌膚如雪隧期。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天赘娄,我揣著相機(jī)與錄音厌秒,去河邊找鬼。 笑死擅憔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的檐晕。 我是一名探鬼主播暑诸,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辟灰!你這毒婦竟也來了个榕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤芥喇,失蹤者是張志新(化名)和其女友劉穎西采,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體继控,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡械馆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年胖眷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霹崎。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珊搀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尾菇,到底是詐尸還是另有隱情境析,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布派诬,位于F島的核電站劳淆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏默赂。R本人自食惡果不足惜沛鸵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望放可。 院中可真熱鬧谒臼,春花似錦、人聲如沸耀里。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冯挎。三九已至底哥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間房官,已是汗流浹背趾徽。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翰守,地道東北人孵奶。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蜡峰,于是被迫代替她去往敵國(guó)和親了袁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355