XDCTF2014 Writeup之Web和Crack篇

2014-10-07 19,995

 

 

xdctf2014

 

 

 

 

 

 

 

 

 

 

0x01 Web20

什么,小P说来点彩头?先出个简单的,就WEB20吧。

题目链接: WEB20

hint > 大家不知道复活节要玩什么吗?(非前端题,请勿关注html注释、css、javascript等)

 

xd1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

之前被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

 

xd2

 

Your Flag                flag-WhatisPhp-mtzeXAtcKA53

 

 

0x02 We***

在业界都知道,哪一行都不好做,我们这一行也不例外,拿XSS来说,没两把刷子,你还能混得下去么,下面是某黑写的XSS编码神器,你值得拥有,但是为了版权问题,他在里面留了标记,找到标记,这神器就是你的!!牛x的你值得拥有........
之前flag有点小BUG,现在已经修复了哦~

下载得到一个crx文件,拖到chrome的extensions里面看了下没啥标记,然后修改后缀为rar或zip解压。

xd3

 

想想也知道key不会这么快找到;这里没有再翻翻其他文件,也都没有发现flag,看下两个图片的EXIF信息,发现有XP注释!

xd4

 

(话说这题队友隔壁老王是直接用windows文件夹看到备注然后拿下提交,然后团队得分了。)

xdctf123

 

107 101 121 32 105 115 58 88 68 83 101 99 64 50 79 49 52
key is:XDSec@2014

 

0x03 Web70

大家都说XSS很不好玩,但是会玩的人就是很好玩,你觉得呢?呵呵

xd5
xd6

xd7

Jother编码提交exp和截图到邮箱得flag

XsSXD$3(201X@xiD@n

 

0x04 Web100

 

xd8

 

 

 

 

 

 

 

 

 

 

 

 

 

一开始做这道题就确定是隐写的方向了……直接用winhex打开一看,发现看不出什么名堂。

用steganabara和stegsolve看了一阵子随机图层,没发现什么隐藏信息。

于是回头继续看源代码……发现有注释提示

xd9

按照注释的路径尝试,发现是一个二维码,扫之……

xd10

 

 

 

 

 

扫出来是这么一个东西

xd11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

阅读了一下文章,发现是将恶意代码隐藏在像素中躲避杀软……

 

xd12

 

 

然后用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

 

xd20

 

 

 

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

 

xd21

 

 

 

 
奇怪,为什么没全部显示出来

哦,我懂了些什么
哦,我懂了些什么

奇葩的码畜你不要卖萌了

这是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。

flag              XDCTF{X1di4nUn1Vers1tySecT3AM}

xd28

 

 

 

0x06 Web150

最近,小黑在学习入侵技术的过程中得到一款功能十分强大的php木马,但是使用了一段时间发现,自己拿到的shell老是被别人登录,但刚开始学习的小黑,对php代码不是很熟悉,你能帮他分析下这代码吗?找到后门接收shell的密码作为key,不是后门密码哟........ 

 

下载下来发现是一个加密后的PHP。搜了一下,特征很像神盾php加密。

xd14

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

xd15

 

上传解密,看到flag

XDSE@L0VEr2014

 

0x07 Web180

xd23

下载回来源码 看了数据库data.mdb里面没啥 然后发现了深度隐藏文件about.asp

是一个asp的大马 也找不到更好的办法了 就姑且认为这个版权的人就是我们要找到犯罪分子 xd22

 

<%@ LANGUAGE = VBScript.Encode %><%
Server.ScriptTimeout=999999999
UserPass="3895" '密码
mNametitle ="gh0st2014" ' 标题
Copyright="qq:2725629821" '版权

 

那么昵称就是gh0st2014,QQ很新,社工库里面肯定无收获,那么这题就是考一些常规的社工和信息收集了。

xd24

 

 

 

 

 

 

 

 

 

 

 

 

访问此人空间 提示

xd25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

很简单 直接 gh0st2014猜进去 其实这里可是设计的难度大一点 贴近生活一点。

xd26

 

根据空间里面破碎的***和基本信息

性别: 男
年龄: 29
生日: 5月7日
星座: 金牛座
现居地:
中国 陕西 西安

 

推出此人***610121198505073895

然后登陆 获得key:Welcome@Xidan$@clov@r

xd27

 

 

 

 

 

0x08 Web250

小P闲暇时间开发了一个留言板,供浏览者与管理员进行交流,不过听说有点问题?

地址:http://lsoyon.xdctf.com:8081/4CgtWuwdouSE/

FLAG在管理员的cookie中。flag形如flag-xxxx。

请自行测试确认能获得cookie,再点击提交审核,管理员会查看。管理员的浏览器是chrome最新版哦~

提交审核后请不要删除你的留言,否则管理员看不到的哦~

管理员2分钟看一次留言板,每次停留3秒。看过以后才能够再次提交审核。所以请测试真实通过后再提交。

 

xd29

于是尝试使用[script][/script]提交发现括号被过滤了,使用<svg>标签和HTML十进制编码成功绕过(这里正好用上前面题里的XSS神器: ),还蛮好用的)

xd30

 

xd80

 

成功弹出cookie

构造payload将cookie发到xss平台,却发现存在CSP协定……

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

我最后是做到后面的web270的时候,上传了shell,用菜刀连上后,上传了一个接收cookie的php。

也算是个YD的方法吧,哈哈,思路要开阔!

xd31

 

 

 

 

 

 

 

 

 

构造payload:

xd81

 

 

 

 

等了几分钟就收到管理员的cookie啦

xd31

 

 

 

 

 

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

xd32

爆出管理员密码 登陆后台

xd33

 

找到文件管理,传个菜刀马

xd35

 

上大马 直接搜索flag

xd39

 

直接就得到3个flag,超级开心。xd41

 

 

xd38 xd37 xd36

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

而在Web270[2]的flag中提示了第三个flag也在这台服务器上。

用菜刀访问/home/wwwroot时提示没有权限

xd40

 

 

用大马看下发现服务器设置了open_basedir

xd42

 

 

 

 

找一个能够bypass open_basedir的马上传,翻翻目录成功得到第三个flag,拿下了这题的firstblood!

xd43

 

 

web的题目就上面这些了,其中有3题我们是拿了一血的,哈哈。下面是破解类:

 

0x01 Crack100

逆向分析,获取key,题目

tips:flag为44位,41位的请继续分析

 

xd43

 

 

 

 

 

 

 

PEiD查下,是.net程序。

xd44

 

 

用ILSpy打开,发现代码被混淆了。用de4dot脱下壳试试,发现加了.net reactor的壳

xd45

 

 

 

 

 

 

 

 

 

脱壳后就简单多了

xd46

比较坑的是

xd48

 

 

 

 

 

 

 

直接看这一段代码逆出来的是一个41位的flag,flag中还含有XDCTF2014,提交几次不对后,问了下管理员,管理员说要在仔细看看源码,可能忽略了一些步骤。

重新看代码后发现可能存在多个flagxd50

 

 

xd49

 

 

 

 

 

 

由于smethod_1有关于base64的操作,使密文与明文的长度不同。

xd47

 

 

这道题拿到了1血,开心 xd41

 

 

 

0x02 Crack120

某天,小黑在某服务器上得到一个data文件,旁边有句挑衅的话“有种你就解开data中的数据”,小黑折腾了半天,没任何发现,但是推敲出,该目录下的另外一个文件,与data息息相关,你来试试?

 

题目给出了一个没有扩展名的文件和一个加密后的data。

打开没有后缀名的文件后发现里面多处出现.pyt,module,__name__字样,猜测这可能是一个pyc文件。

使用uncompyler.py反编译之~

xd51

 

 

 

这样有了源码逆起来就很简单啦,看不太懂的地方把它print出来看看基本也就明白了

xd52

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

运行下

xd53

 

 

 

 

 

 

 

 

 

 

 

 

xd54

 

 

 

 

 

这段不造什么时候才能进入,貌似要有连续127位相同?算啦,先不管了。

其余部分的逆算法很简单,如果是0x8?的话,表示有?个连续的1;如果是0x0?的话,则表示有?个连续的0。

xd55

 

 

 

 

 

 

 

 

 

 

 

运行后得到一个图片,flag就在图片上~

xd56

 

 

 

 

 

 

 

0x03 Crack150

这个是一个apk,找到key,题目

 

打开后发现是一个登陆界面,看下源码找到用户名和密码(buaa,123),成功登陆。

xd57

打开后发现界面与微信相似,里面有和一个人的聊天记录,打开看下叭

xd58

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

xd59

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这是XXshenqi的部分源码。

果断翻下assets看看有没有什么有用的东西~

xd60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用UE看下图片数据,发现文件末尾附加了一个dex文件

xd61

提取出来转为jar报错

xd62

 

 

 

 

 

 

 

只好用notepad++打开看下

xd63

发现末尾有一段中文,将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即可。

 

xd64

 

 

 

 

 

 

 

 

 

 

创建ID后会被分配一个One-time-Password

丢到cmd5查询无果,继续测试Transfer of Account

xd65

 

 

 

 

 

 

 

 

 

 

 

 

 

发现send的信息中含有许多5位一组的AB数据,猜测为培根密码,尝试对其进行解密:

xd66

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

对这两串数据进行diff

xd67

发现差异节中包括前面题目生成的One-Time-Password

猜测b8c2b5c881f2b7f58a096a367a32be33为Ph的One-Time-Password

xd68

 

 

 

 

 

 

 

 

 

 

 

 

 

 

成功得到Flag

 

0x05 Crack300

  逆向分析,比比谁更邪恶,题目

这道题不知道为什么,PEiD查不出壳,用IDA加载就报错,只能用OD分析了……略坑: (

xd69

先大概看下程序,401049处必须跳转,因此上面的两个字符串必须相同,得到0x40301F处应为XDCT

xd70

这里有一句检测断点的,到这里的时候别忘了改下标志位就好。

xd71

具体的分析过程就不详细写了,算法我用Python进行了模拟,发现需要对key进行枚举。

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

xd72

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2014.1010 SP小编更新:

官方Writeup

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

    we***、web70、web100、web150、web180、crack100、crack150、crack200、exploit100、exploit200、exploit600、coding Writeup http://pan.baidu.com/s/1i39oMBr

 

本文由Q7和隔壁老王以及老王团队原创,首发在SecPulse安全脉搏上。

原创作者:Q7

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

 

 

 

本文作者:Q7

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/1153.html

Tags:
评论  (8)
快来写下你的想法吧!

Q7

文章数:1 积分: 0

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号