SCTF(三叶草CTF) Write-Up

SCTF(三叶草CTF)作为XCTF联赛的成都分站赛,由三叶草安全技术小组负责组织。本次比赛采用线上解题形式,比赛冠军队伍直接入围XCTF联赛总决赛。

MISC部分

MISC10:

手持两把锟斤拷,口中疾呼烫烫烫

脚踏千朵屯屯屯,笑看万物锘锘锘。

程序员经典笑话不解释。

MISC100:

简单的贪吃蛇,吃到30分它就告诉你flag!但是要怎么控制它呢?IDA稍微看一下,发现是接受kill消息。Bash下做几个alias,W S A D,然后控制着玩儿就好了:

14184750632831.png!small

14184750801752.png!small

那串东西bash64解密就是flag。

MISC200:

A-Cup的妹子,你肯定看腻了。我们换一个C-cup。题目的做法没有改变,只是之前的题有另类解法,所以完善了题目。

tips:密钥即为文件名

一个图片,改成rar打开:

14184751515633.png!small

14184751682201.png!small

加密的,目测是伪加密,详见这篇文章:http://r4c00n.com/article/34/apk-zip.html。好压没办法修复,卸了装winrar修复然后改标志解压,mp3stego,前几天刚总结了一下某本书的隐写术:http://www.0x01f.com/blog/61。Decode就行了,密钥sctf:

14184751975393.png!small

找到端口和IP,一个游戏的端口。我不会玩,队友去搞了。据说是跟着一条细红线走过去就看到flag了。

MISC300:

内网攻击数据包分析

SMB包里找到hash和challange。

参考http://bbs.pediy.com/showthread.php?t=176189&highlight=SMB

下下来彩虹表,编译一个rcracki_mt出来,很快就跑出来前七位。

14184752477552.png!small

然后扔kali虚拟机里,秒破密码。

14184752778160.png!small

 

MISC400A:

这是捕获的黑客攻击数据包,LateRain用户的密码在此次攻击中泄露了,你能找到吗?

FLAG格式:SCTF{LateRain的明文密码},里面发现了一些HTTP包,都是菜刀的数据包。其中有一个返回包是下载了一个RAR

14184754198908.jpg!small

导出二进制内容,去掉头尾的菜刀添加的标志,写入一个文件,发现有密码。往前翻一下,这个请求的内容是打包,命令为:

14184754874210.jpg!small解压出来,得到1.gif,是一个MDMP文件。

下到这个dump文件,然后上mimikatz64,两条命令:

找到密码:

14184755021771.png!small

后面有几个空格,冲定位到txt里头复制出来就行了。

MISC400B:

别看妹子了,快做题。

Binwalk看一下:

后面是Zlib压缩的数据,写个脚本解压一下:

 

得到一个二维码,但是不能访问:

14184756194969.png!small

PS变相之后就可以了 微信扫一扫,SCTF{(121.518549,25.040854)}

RE50

听说逆向都挺难的,这里有个简单的,快来秒~~~ :D

确实非常简单,输入的每个字符+3 = 文件中的某个字符串字符 就可以了:

 

PWN部分

Pwn200:

14184756694557.png!small

这里可以输入17个字符,刚好把len_0x10覆盖,如果输入’syclover’ + ‘\x00’ + ‘abcdefg’ + ‘\xFF’,就可以满足条件的同时覆盖len_0x10为255,之后的buffer也可以覆盖。

14184757734273.png!small

然后就栈溢出。

首先覆盖返回地址,让它跳转到调用write “input name”的地方,参数可以自己构造,这样就可以输出任意函数的got。随后将第二个返回值覆盖成system地址,参数构造成/bin/sh,然后就得到shell。

14184756952525.png!small

这里选择read,根据libc里头的偏移,可以算出read和system的相对偏移:

14184758309584.png!small

14184758322940.png!small

代码:

Pwn300:

printf格式化漏洞。

14184758735586.png!small

随意构造栈,并且能覆盖任意地址。Message部分代码是可执行的,写入shellcode即可。

Code200

迭代就可以了,奇数幂变成 奇数+1幂 - 奇数幂,重复的话就变成 奇数+1+1幂,然后又是同样的情况,最后肯定不可能重复,代码略长,懒得写到一个函数里了:

WEB部分

PT100

PT100题进不去了,中间过程没法截图了……

看到后台,第一反映就是

401,发现是IIS6,试了一圈以后发现::$INDEX_ALLOCATION/index.php可以破。

进去以后是个登录窗口,id输入框被disable了,这简直就是在告诉你问题就出在这了……

最后Payload:

14184759445129.png!small

PT200:

进去之后先查看源代码,发现一个这个:

14184759982683.png!small

看一下输出在哪。

14184761161139.jpg!small

14184761172124.jpg!small

试了几个标签,svg,img,script啥的都过滤了,iframe没过滤,但是on被过滤了,data也被过滤了,利用不了,利用一个Chrome里才能用的姿势:

xxx.me里的index.php这样写:

成功弹框。

14184761685918.png!small

用这个方法打到了后台地址。

http://kali.sycsec.com/ebcb6eb2004d1f4086ef87cdf5d678c3/

但是直接访问是403,带上XFF头就变成了fuck you!,于是直接弹回来页面内容看一下。

弹回来的页面内容里发现了 flag.php?id= 这么一个链接,应该是要注入,直接访问跟之前一样,403或者fuck you!,于是通过XSS注入,把访问到的flag.php的内容弹回来。

自己的VPS上,index.php:

u=f 和u=d分别是我和队友用,防止注入的时候互相干扰。

1.php:

2.php类似,写入另一个文件。

这个时候我们犯了一个错误,本来这样写是为了方便,提交的时候改一下href就可以了,不用改index.php里的代码,但是这样一来 on data这些字符串就被XSS的过滤器给替换成 _ 了。

常用的报错姿势都被拦截了,后来实在想不出来招了,手工盲注,连注带蒙,大概两个小时吧,拿到flag,一开始大小写还搞错了,浪费了很多次提交机会。

PT300:

先去看robots.txt

14184762517029.png!small

直接访问当然不可能直接出来flag= =……

14184762748136.png!small

队友从idc.sycsec.com找到了源代码,有三个版本,通过

/assets/js/jquery-1.4.4.min.js

文件判断应该是1.0.8或者1.0.9版本。

现在我们需要的应该是一个任意文件读取/下载或者本地文件包含。

看一下HTTP头,

14184762987886.png!small

PHP版本5.5.0,%00截断没戏了。

找include,找到这个文件:

这里可以包含任意文件不用截断,但是由于前面引用了全局常量, 在这个文件里没有定义,需要找到正确的入口文件。

/index-ajax.php。

最终payload:

 

POST;

 

14184763847093.png!small

PT400:

Idc.sycsec.com 注入,联合查询,搞到数据库,在bug提交的地方提交Union all select 出来XSSpayload的URL,得到后台地址,登录进去之后上传,没过滤后缀名,过滤<? ,利用

 

拿到shell.

14184764938580.jpg!small

14184764949950.jpg!small

得到wp的代码,跟原版的4.0.1diff一下,发现一个代码执行的后门,在/wp-includes/resivion.php.

 

这时候已经八点五十左右了,构造出来cookie之后还没来得及干什么时间就到了……

PT500:

CSDN裤子里查到了妹子SYC083的密码,在提交报告的地方注入得到了十几个用户,有两个能登录邮箱,发现VPN的地址和密码规律,遍历生日年份得到了SYC079的密码,访问文件服务器(10.24.13.37),卡了很久,也是快到时间的时候发现了/.svn/,没提前准备代理,手动脱没来得及脱多少就Game Over了……

14184766023445.jpg!small