現在位置: 首頁 > 獨家 > 正文 XDCTF2014 Writeup之Web和Crack篇

現在位置:首頁>獨家> 正文

XDCTF2014 Writeup之Web和Crack篇

2014 /10/7 11:27

6,004

評論 8 條

0x01?Web20

什么,小P說來點彩頭?先出個簡單的,就WEB20吧。題目鏈接:WEB20hint?>?大家不知道復活節要玩什么嗎?(非前端題,請勿關注html注釋、css、javascript等)

之前被HTML注釋和小P的博客坑了很久 毫無頭緒 還盯著圖片看是否有隱寫術之類。。。

折騰了一下然后去做后面的題目搶分去了 后來根據提示得知是考php彩蛋信息

?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP信息列表)

?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP的LOGO)

?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend LOGO)

?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 (PHP LOGO 藍色大象)

http://game1.xdctf.com:8081/H86Ki4NnCSVv/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Your Flagflag-WhatisPhp-mtzeXAtcKA53

0x02?Web50

在業界都知道,哪一行都不好做,我們這一行也不例外,拿XSS來說,沒兩把刷子,你還能混得下去么,下面是某黑寫的XSS編碼神器,你值得擁有,但是為了版權問題,他在里面留了標記,找到標記,這神器就是你的!!牛x的你值得擁有........之前flag有點小BUG,現在已經修復了哦~

下載得到一個crx文件,拖到chrome的extensions里面看了下沒啥標記,然后修改后綴為rar或zip解壓。

想想也知道key不會這么快找到;這里沒有再翻翻其他文件,也都沒有發現flag,看下兩個圖片的EXIF信息,發現有XP注釋!

(話說這題隊友隔壁老王是直接用windows文件夾看到備注然后拿下提交,然后團隊得分了。)

107 101 121 32 105 115 58 88 68 83 101 99 64 50 79 49 52

key is:XDSec@2014

0x03 Web70

大家都說XSS很不好玩,但是會玩的人就是很好玩,你覺得呢?呵呵

Jother編碼提交exp和截圖到郵箱得flag

XsSXD$3(201X@xiD@n

0x04?Web100

一開始做這道題就確定是隱寫的方向了……直接用winhex打開一看,發現看不出什么名堂。

用steganabara和stegsolve看了一陣子隨機圖層,沒發現什么隱藏信息。

于是回頭繼續看源代碼……發現有注釋提示

按照注釋的路徑嘗試,發現是一個二維碼,掃之……

掃出來是這么一個東西

閱讀了一下文章,發現是將惡意代碼隱藏在像素中躲避殺軟……

然后用stegsolve的Data?Extract功能,基于像素對比,一個個嘗試,最終在red0上試出來了flag(雖然不知道原理,但覺得確實很好用,還有待進一步學習吶==)

0x05?Web200

自從小P告訴離休老干部le4f?python怎么寫網站以后,就一發不可收拾。這是le4f的新作:http://y0pk678.xdctf.com:8081/說明:本題flag形式為XDCTF{XXXX},填入XXXX內容即可。

http://y0pk678.xdctf.com:8081/help

http://y0pk678.xdctf.com:8081/read?file=readme

奇怪,為什么沒全部顯示出來

哦,我懂了些什么

哦,我懂了些什么

奇葩的碼畜你不要賣萌了

這是newapp.py的說明文件

我猜你可能不知道還有第二行

我猜你可能不知道還有第二行

咦,怎么還有第三行

咦,怎么還有第三行

奇怪,為什么沒全部顯示出來

http://y0pk678.xdctf.com:8081/read?file=newapp.py

反復讀取,拼接成完整的newapp.py

#!/usr/bin/env python

#coding=utf-8

__author__ = 'le4f.net'

import web

import random

urls = (

'/getflag', 'xdctf',

'/help', 'help',

'/read', 'read',

'.*','ctf'

)

def func(a):

if a == 'le4f.net':

flag = open("flagishere","r").readlines()[0].strip()

web.header('flag', flag)

return 'Nice Job!!!'

else:

pass

class help:

def GET(self)

try:

return "welcome to my first web.py project."

except:

pass

class xdctf:

def GET(self):

try:

web.input(_unicode=func(web.input(unabletoread = 'show me flag!!!!').get('unabletoread')))

return "flag is here?!!show me flag!!!!"

except:

pass

class ctf:

def GET(self):

try:

return "u may need help information."

except:

pass

class read:

def GET(self):

data = web.input(file = 'readme')

if data['file'].count('.') > 1:

f = 'readme'

else:

f = data['file'].replace('$','').replace('^','.').replace('*','').replace('\\','').replace('/','').replace('\"','').replace('\'','').replace('|','').replace(';','.').replace('<','').replace('>','').replace('&','').lower()

try:

print f

cont = open("./"+f,"r").readlines()

rand = random.randint(0,len(cont)-2)

return cont[rand]+'\n'+cont[rand+1]

except:

pass

else:

pass

if __name__ == "__main__":

app = web.application(urls, globals())

app.run()

根據代碼發送一個get請求,在header中看到flag。

flagXDCTF{X1di4nUn1Vers1tySecT3AM}

0x06?Web150

最近,小黑在學習入侵技術的過程中得到一款功能十分強大的php木馬,但是使用了一段時間發現,自己拿到的shell老是被別人登錄,但剛開始學習的小黑,對php代碼不是很熟悉,你能幫他分析下這代碼嗎?找到后門接收shell的密碼作為key,不是后門密碼喲........

下載下來發現是一個加密后的PHP。搜了一下,特征很像神盾php加密。

在網上找到一個PHP神盾的解密網站?http://blog.99tk.cn/decode#

上傳解密,看到flag

XDSE@L0VEr2014

0x07?Web180

下載回來源碼 看了數據庫data.mdb里面沒啥 然后發現了深度隱藏文件about.asp

是一個asp的大馬 也找不到更好的辦法了 就姑且認為這個版權的人就是我們要找到犯罪分子

<%@ LANGUAGE = VBScript.Encode %><%

Server.ScriptTimeout=999999999

UserPass="3895" '密碼

mNametitle ="gh0st2014" ' 標題

Copyright="qq:2725629821" '版權

那么昵稱就是gh0st2014,QQ很新,社工庫里面肯定無收獲,那么這題就是考一些常規的社工和信息收集了。

訪問此人空間 提示

很簡單 直接 gh0st2014猜進去 其實這里可是設計的難度大一點 貼近生活一點。

根據空間里面破碎的身份證和基本信息

性別: 男

年齡: 29

生日: 5月7日

星座: 金牛座

現居地:

中國 陜西 西安

推出此人身份證610121198505073895

然后登陸 獲得key:Welcome@Xidan$@clov@r

0x08?Web250

小P閑暇時間開發了一個留言板,供瀏覽者與管理員進行交流,不過聽說有點問題?地址:http://lsoyon.xdctf.com:8081/4CgtWuwdouSE/FLAG在管理員的cookie中。flag形如flag-xxxx。請自行測試確認能獲得cookie,再點擊提交審核,管理員會查看。管理員的瀏覽器是chrome最新版哦~提交審核后請不要刪除你的留言,否則管理員看不到的哦~管理員2分鐘看一次留言板,每次停留3秒。看過以后才能夠再次提交審核。所以請測試真實通過后再提交。

于是嘗試使用[script][/script]提交發現括號被過濾了,使用標簽和HTML十進制編碼成功繞過(這里正好用上前面題里的XSS神器:?),還蠻好用的)

成功彈出cookie

構造payload將cookie發到xss平臺,卻發現存在CSP協定……

然后就沒有什么思路了….不知道其他隊伍是怎么直接拿到cookie的 怎么搞定CSP的

我最后是做到后面的web270的時候,上傳了shell,用菜刀連上后,上傳了一個接收cookie的php。

也算是個YD的方法吧,哈哈,思路要開闊!

構造payload:

等了幾分鐘就收到管理員的cookie啦

0x08?Web270[1,2,3,4]

小P睡了一覺起來,發現黑客們都饑渴難耐,想日站想瘋了。小P默默地看了看自己的網站:http://ph.xdctf.com:8082/感覺不知道放個什么程序比較好,而同服的另一個網站居然已經運營很久了:http://hlecgsp1.xdctf.com:8082/真不知道該怎么辦……這是一個系列題目,分步驟給分。一共4個FLAG都在小P網站所在的服務器中。請黑客們不要破壞網站文件、數據庫。一旦發現有阻礙比賽正常進行的現象,將會恢復服務器到最初狀態。說明:4個flag都形如flag-xxxx

打開后發現時phpok的cms。

果斷搜索下漏洞,發現有sql注入和文件上傳。

文件上傳的洞算出來時間戳跑文件名沒有跑出來后果斷換方法,嘗試sql注入。

http://hlecgsp1.xdctf.com:8082/api.php?c=api&f=phpok&id=_project?m[pid]=1%20UNION%20SELECT%201,concat(version(),%200x7e,%20user()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33

爆出管理員密碼 登陸后臺

找到文件管理,傳個菜刀馬

上大馬 直接搜索flag

直接就得到3個flag,超級開心。

而在Web270[2]的flag中提示了第三個flag也在這臺服務器上。

用菜刀訪問/home/wwwroot時提示沒有權限

用大馬看下發現服務器設置了open_basedir

找一個能夠bypass?open_basedir的馬上傳,翻翻目錄成功得到第三個flag,拿下了這題的firstblood!

web的題目就上面這些了,其中有3題我們是拿了一血的,哈哈。下面是破解類:

0x01?Crack100

逆向分析,獲取key,題目tips:flag為44位,41位的請繼續分析

PEiD查下,是.net程序。

用ILSpy打開,發現代碼被混淆了。用de4dot脫下殼試試,發現加了.net?reactor的殼

脫殼后就簡單多了

比較坑的是

直接看這一段代碼逆出來的是一個41位的flag,flag中還含有XDCTF2014,提交幾次不對后,問了下管理員,管理員說要在仔細看看源碼,可能忽略了一些步驟。

重新看代碼后發現可能存在多個flag

由于smethod_1有關于base64的操作,使密文與明文的長度不同。

這道題拿到了1血,開心

0x02?Crack120

某天,小黑在某服務器上得到一個data文件,旁邊有句挑釁的話“有種你就解開data中的數據”,小黑折騰了半天,沒任何發現,但是推敲出,該目錄下的另外一個文件,與data息息相關,你來試試?

題目給出了一個沒有擴展名的文件和一個加密后的data。

打開沒有后綴名的文件后發現里面多處出現.pyt,module,__name__字樣,猜測這可能是一個pyc文件。

使用uncompyler.py反編譯之~

這樣有了源碼逆起來就很簡單啦,看不太懂的地方把它print出來看看基本也就明白了

運行下

這段不造什么時候才能進入,貌似要有連續127位相同?算啦,先不管了。

其余部分的逆算法很簡單,如果是0x8?的話,表示有?個連續的1;如果是0x0?的話,則表示有?個連續的0。

運行后得到一個圖片,flag就在圖片上~

0x03?Crack150

這個是一個apk,找到key,題目

打開后發現是一個登陸界面,看下源碼找到用戶名和密碼(buaa,123),成功登陸。

打開后發現界面與微信相似,里面有和一個人的聊天記錄,打開看下叭

聊天中提到了前一陣子被媒體炒得很火的xxshenqi。

這是XXshenqi的部分源碼。

果斷翻下assets看看有沒有什么有用的東西~

用UE看下圖片數據,發現文件末尾附加了一個dex文件

提取出來轉為jar報錯

只好用notepad++打開看下

發現末尾有一段中文,將key?md5編碼后提交,成功通過:?)

0x04?Crack180

ZZ發現土豪Ph在用SafeAccountSystem給Le4f打一筆退休金$23333,ZZ截斷了支付過程的密文,打算捉弄一下他們把退休金打到自己賬戶Z2333上。密文點此處下載:?http://game1.xdctf.com:8081/Z4l2Lu7XkNBa/crypt.txt支付系統的地址?game1.xdctf.com???端口,50008,請用nc連接(telnet不行)本題考點加密與解密,可是沒這個分類,真拙計。本題flag形如xdctf{xxx},答案填入xxx即可。

創建ID后會被分配一個One-time-Password

丟到cmd5查詢無果,繼續測試Transfer?of?Account

發現send的信息中含有許多5位一組的AB數據,猜測為培根密碼,嘗試對其進行解密:

對這兩串數據進行diff

發現差異節中包括前面題目生成的One-Time-Password

猜測b8c2b5c881f2b7f58a096a367a32be33為Ph的One-Time-Password

成功得到Flag

0x05?Crack300

逆向分析,比比誰更邪惡,題目

這道題不知道為什么,PEiD查不出殼,用IDA加載就報錯,只能用OD分析了……略坑:?(

先大概看下程序,401049處必須跳轉,因此上面的兩個字符串必須相同,得到0x40301F處應為XDCT

這里有一句檢測斷點的,到這里的時候別忘了改下標志位就好。

具體的分析過程就不詳細寫了,算法我用Python進行了模擬,發現需要對key進行枚舉。

跑出來key是X@3!F,得到flag?XDCTF{omgwtfjusthappenedtherethen}

2014.1010 SP小編更新:

官方Writeup

web20、web200、web250、crack180、web270 Writeuphttp://pan.baidu.com/s/1mg829zM

web50、web70、web100、web150、web180、crack100、crack150、crack200、exploit100、exploit200、exploit600、coding Writeuphttp://pan.baidu.com/s/1i39oMBr

本文由Q7和隔壁老王以及老王團隊原創,首發在SecPulse安全脈搏上。

原創作者:Q7

SP地址:http://www.secpulse.com/archives/1153.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容