现在位置:首页>独家> 正文
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