2021-09-11-清華大學(xué)-奇安信CTF訓(xùn)練營筆記

XEE相關(guān)

一笼裳、簡介

https://www.cnblogs.com/xhds/p/12327732.html

XXE漏洞全稱(XML External Entity Injection)即xml外部實(shí)體注入漏洞,XXE漏洞發(fā)生在應(yīng)用程序解析XML輸入時(shí),沒有禁止外部實(shí)體的加載老速,導(dǎo)致可加載惡意外部文件,造成文件讀取、命令執(zhí)行、內(nèi)網(wǎng)端口掃描姆打、攻擊內(nèi)網(wǎng)網(wǎng)站、發(fā)起dos攻擊等危害肠虽。xxe漏洞觸發(fā)的點(diǎn)往往是可以上傳xml文件的位置幔戏,沒有對上傳的xml文件進(jìn)行過濾,導(dǎo)致可上傳惡意xml文件税课。

image-20210911164818481.png

二闲延、繞過技巧

  • 編碼繞過:iconv - f utf-8 -t utf-16 1.xml > 2.xml 繞過waf

  • 關(guān)鍵字過濾

    1.繞過SYSTEM的過濾:PUBLIC+隨機(jī)字符串 約等于 SYSTEM

image-20210911101033211.png
2.繞過遠(yuǎn)程dtd過濾:先寫到dtd文件,在提交dtd韩玩,文件名改成.d就行
image-20210911101409260.png
  1. 其他繞過:空格


    image-20210911101933603.png

PHP相關(guān)

一垒玲、md5繞過 (值不一樣的,但是md5的值一樣)

練習(xí)1:一個(gè)數(shù)字小于2020彪蓬,+1大于2021
image-20210911105021404.png

解:intval函數(shù)是取整數(shù)操作寸莫,不僅可以處理十進(jìn)制,還可以是八進(jìn)制和科學(xué)計(jì)數(shù)法(php5有效档冬,php7無效)傳入1e5
intval(1e5) = 1 (非數(shù)字開始后面的全部丟棄)
intval(1e5+1)=100001(+1之后intval就當(dāng)作科學(xué)計(jì)數(shù)法處理了)

練習(xí)2:一個(gè)值的md5 等于這個(gè)值

image-20210911105547278.png

解:md5(0exxxx)==0exxxx 腳本爆破

image-20210911105741935.png

練習(xí)3:不是回文序列膘茎,但是正序和逆序取整之后的值相等

image-20210911111104795.png
  • num=numpositive說明需要傳一個(gè)整數(shù),但是正則中又加入了小數(shù)點(diǎn):利用浮點(diǎn)數(shù)精度繞過
image-20210911111552883.png
  • 回文繞過:100.0010酷誓,小數(shù)點(diǎn)最后加0
image-20210911111307492.png
  • 最終payload
image-20210911111744849.png

練習(xí)4:一個(gè)數(shù)的md5的md5等于本身

image-20210911111830636.png

解:爆破得到結(jié)果 0e1138100474滿足要求

image-20210911111925739.png

二披坏、hash長度擴(kuò)展攻擊

https://www.cnblogs.com/pcat/p/5478509.html。一般題目是這樣的:

  • 準(zhǔn)備了一個(gè)密文(secret)和一些數(shù)據(jù)(“admin”)構(gòu)造成一個(gè)字符串呛牲,并且使用了MD5之類的哈希函數(shù)生成了一個(gè)哈希值(也就是所謂的signature/簽名刮萌。hash_admin)密文長度是已知量驮配。

  • 讓攻擊者可以提交數(shù)據(jù)(username)以及哈希值(hash_user)娘扩,雖然攻擊者不知道密文(secret)

  • 服務(wù)器把提交的數(shù)據(jù)(username)跟密文(secret)拼接,判斷哈希后是否等于提交的哈希值(hash_user)

image-20210911112327515.png
  • 解題工具:hashpump(https://github.com/bwall/HashPump

    參數(shù):hash_admin壮锻;“admin”琐旁; secret的長度; “ abc”(任意字符串)

    結(jié)果:第一行是新的簽名猜绣,也就是hash_user; 第二行就是username灰殴,把\x替換為%后post提交

3e67e8f0c05e1ad68020df30bbc505f5
admin\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\abc

三、變量覆蓋

  • extract :$a=“Cat”掰邢, 直接覆蓋原來的值“Original”
image-20210911113111005.png
  • $$可變變量
image-20210911115301538.png
  • parse_str(): 把查詢字符串解析到變量中牺陶,如果沒array 參數(shù)伟阔,則該函數(shù)設(shè)置的變量將覆蓋已存在的同名變量。
image-20210911115705441.png

練習(xí)1:parse_str

image-20210911135445567.png

解:首先要求使用GET提交id參數(shù)掰伸,然后parse_str($id)對id參數(shù)的數(shù)據(jù)進(jìn)行處理皱炉,再使用判斷$a[0] != ‘QNKCDZO’ && md5($a[0]) == md5(‘QNKCDZO’)的結(jié)果是否為真,為真就返回flag狮鸭。

只需要找到一個(gè)字符串md5后的結(jié)果是0e開頭后面都是數(shù)字的就行合搅,如240610708,s878926199a歧蕉。之后利用parse_str函數(shù)將a[0]賦值為240610708 :GET請求id=a[0]=240610708灾部,這樣會將a[0]的值覆蓋為240610708

練習(xí)2: extract

https://blog.csdn.net/qq_38154820/article/details/113874923

image-20210911113248158.png

解:模板渲染

  • file_get_contents函數(shù)讀取template數(shù)組中tp對應(yīng)的value,tp的通過get方式獲得惯退,只需要用extract函數(shù)覆蓋template的值赌髓,就可以利用tp參數(shù)控制對應(yīng)的value值:var[template][tp1]=template.php
image-20210911113509910.png

?var[template][tp1]=aaa 等同于輸入了$template=array('tp1'=>'aaa');全部覆蓋了template

  • 實(shí)現(xiàn)變量覆蓋后催跪,訪問一下路徑看到template.php源碼春弥,這里file_get_content讀取到的并不是直接顯示,而是被template.php寫入到了某個(gè)地方叠荠。
image-20210911150504944.png

后續(xù)可以用file_get_content讀取我們輸入的data流匿沛,然后被寫入。file_get_contents觸發(fā)phar榛鼎。

  • phar八股文逃呼,生成.phar文件
image-20210911114426194.png

echo file_get_contents("php://filter/convert.base64-encode/resource=phar.phar");

  • payload: ?var[template][tp1]=data://text/plain;base64,R0lG....(上面的輸出)AAR0JNQg%3D%3D&tp=tp1

四、隨機(jī)數(shù)問題

Mt_rand()偽隨機(jī)數(shù):種子固定者娱,隨機(jī)數(shù)就固定抡笼。

注意php版本,版本不同種子一樣的話黄鳍,隨機(jī)數(shù)也會不一樣

問題場景:給出前10個(gè)隨機(jī)數(shù)推姻,求出剩下的10個(gè)20個(gè)隨機(jī)數(shù)。


image-20210911141303774.png

解決:

  • php_mt_seed工具框沟,可以根據(jù)隨機(jī)數(shù)恢復(fù)種子(兩種模式:多個(gè)隨機(jī)數(shù)限制范圍/單個(gè)隨機(jī)數(shù)不限制范圍)

    (需要用第一個(gè)生成出的隨機(jī)數(shù)去猜種子)

  • 不需要爆破:https://www.anquanke.com/post/id/196831

    (適用于種子定時(shí)更新且第一個(gè)隨機(jī)數(shù)不知道的情況)

image-20210911143012103.png

五藏古、遠(yuǎn)程代碼執(zhí)行(有點(diǎn)復(fù)雜,沒跟上)

無參數(shù)RCE:gem-love.com/ctf/530.html

image-20210911143350623.png

正則要求:最里面的括號里不能有參數(shù)

image-20210911143438688.png

六忍燥、create_function拧晕、disable_function

Python相關(guān)

一、Flask框架的Debug模式

https://baijiahao.baidu.com/s?id=1675623348653265301&wfr=spider&for=pc

image-20210911153957118.png

有一個(gè)PIN碼梅垄,固定的厂捞。訪問一個(gè)會報(bào)錯的頁面,點(diǎn)擊下圖紅色箭頭那里。

image-20210911154037714.png

輸入PIN碼就可以得到python的console靡馁。

image-20210911154122984.png

這個(gè)pin碼需要知道其他信息才能知道欲鹏,這些其他信息的獲得一般是考察其他漏洞點(diǎn)。我們?nèi)绻軌騻卧爝@六個(gè)值我們就能夠生成一個(gè)一模一樣的PIN碼了臭墨。debug pin由六個(gè)值決定:

  • 用戶

  • flask.app

  • Flask

  • flask目錄下的一個(gè)app.py的絕對路徑

  • 當(dāng)前電腦的MAC地址貌虾,為mac地址的十進(jìn)制表達(dá)式

  • 首先嘗試讀取/etc/machine-id或者 /proc/sys/kernel/random/boot_i中的值,若有就直接返回裙犹;假如是在win平臺下讀取不到上面兩個(gè)文件尽狠,就去獲取注冊表中SOFTWARE\Microsoft\Cryptography的值,并返回

二叶圃、Flask Session

  • 偽造session:先獲得key袄膏,解密現(xiàn)有的session獲得格式,然后加密自己構(gòu)造的session

https://blog.csdn.net/weixin_42172261/article/details/104454478

  • 結(jié)合ssti 模板注入 {{}}

https://www.dazhuanlan.com/mayulove/topics/1196791

JavaScript相關(guān)

一掺冠、類型污染

image-20210911160521795.png

練習(xí)1:first和second不相等沉馆,但是加上salt后sha1的值相同

image-20210911160630609.png

解:字符串的“0”(first)和數(shù)字0(second),加上一個(gè)字符串“0”(salt)

但這樣是不對的德崭,因?yàn)閿?shù)字沒有l(wèi)ength斥黑,改用數(shù)組 ["0"]

二、原型鏈污染

image-20210911162140633.png
image-20210911162323781.png
image-20210911162706117.png

補(bǔ)充知識

1. 文件讀取的繞過

https://www.cnblogs.com/zaqzzz/p/10288162.html

  • 空格: ${IFS} $IFS $IFS$9 , < <> %09

  • 關(guān)鍵字(eg. 繞過php過濾) :

    1. ph\p ph‘’p p[h]p p{a..z}p

    2. 變量拼接(a=test.ph;b=p;cat $a$b)

    3. 通配符(ph? 或 ph*)

    4. 內(nèi)聯(lián)執(zhí)行(將反引號內(nèi)命令的輸出作為輸入執(zhí)行)

      cat `ls` //執(zhí)行l(wèi)s輸出 index.php 和 flag.php 眉厨。然后再執(zhí)行 cat index.php;cat flag.php

    5. base64編碼 : base64( "cat test.php")=Y2F0IHRlc3QucGhw

image-20210911110444622.png
  • 讀取文件的替代指令:cat more less fmt nl short rev

4.python暴力破解哈希后六位

image-20210911143105431.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锌奴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子憾股,更是在濱河造成了極大的恐慌鹿蜀,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件服球,死亡現(xiàn)場離奇詭異茴恰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)斩熊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門往枣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粉渠,你說我怎么就攤上這事分冈。” “怎么了渣叛?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵丈秩,是天一觀的道長。 經(jīng)常有香客問我淳衙,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任箫攀,我火速辦了婚禮肠牲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靴跛。我一直安慰自己缀雳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布梢睛。 她就那樣靜靜地躺著肥印,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绝葡。 梳的紋絲不亂的頭發(fā)上深碱,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音藏畅,去河邊找鬼敷硅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛愉阎,可吹牛的內(nèi)容都是我干的绞蹦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼榜旦,長吁一口氣:“原來是場噩夢啊……” “哼幽七!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溅呢,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤锉走,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后藕届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挪蹭,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年休偶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梁厉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踏兜,死狀恐怖词顾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碱妆,我是刑警寧澤肉盹,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站疹尾,受9級特大地震影響上忍,放射性物質(zhì)發(fā)生泄漏骤肛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一窍蓝、第九天 我趴在偏房一處隱蔽的房頂上張望腋颠。 院中可真熱鬧,春花似錦吓笙、人聲如沸淑玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽絮蒿。三九已至,卻和暖如春叁鉴,著一層夾襖步出監(jiān)牢的瞬間土涝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工亲茅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留回铛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓克锣,卻偏偏與公主長得像茵肃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子袭祟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344