序
拿flag是不可能的了,这辈子都不可能拿flag的。 题目又不会,只能看看各位神仙师傅的wp才能勉强说是我是搞安全的。 逛大佬的博客就像是回了家一样,这里的师傅都好有才,说话又好听,我超喜欢这里的。
web2
题目
1
login as webmaster
打开是一个登录框
看起来像是一个爆破或者登录绕过。
拿出了1w的字典,php万能密码爆破许久,试过了root, admin,administartor, webmaster, manager等用户均无法登录,登录的结果给出的回显包括
1
2
bad request.
login failed
或者
1
login failed
1
2
3
login failed
bad request.
login failed
一些师傅说的会有法语的报错,我没看到
后来问了隔壁的师傅,他们说payload 是数组绕过
emmm mdzz
payload
1
user[]=admin&pass[]=a&submit=submit
web4
题目
1
你能找得到flag吗
打开提示 你会sql注入吗, 还有中文的验证码
试了下验证码是没有验证的
过滤了空格
回显放到了cookie里面。
具体参考厦大的神仙们的wp
web5
打开提示需要接收四个参数
1
2
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
Hello hacker! Do you want the flag?<br>
<!--
$k1=$_GET['key1'];
$k2=$_GET['key2'];
if(file_get_contents($k1)==="Hello hacker!"){
echo 'welcome! Hacker!<br>';
}
-->
<!--
if(md5($k2)>666666*666666)
{
include('ctf.php');
}
-->
<!--
$k3=$_GET['key3'];
$k4=$_GET['key4'];
if(intval($k3)<666)
{
if($k3==666)
{
echo 'Come on, flag is coming<br>';
if($k4>0)
{
if(intval($k3+$k4)<666)
echo $flag;
}
}
}
-->
每次修改传参,循序渐进即可拿到flag, 花式绕过php的各种限制
首先需要满足key1, key1 会使用file_get_contents()函数去取网页的内容,注意到Headers是这个样子的
1
2
3
4
5
6
7
HTTP/1.1 200 OK
Date: Sat, 23 Dec 2017 08:21:16 GMT
Server: Apache
luck: hellohacker.php
Content-Length: 545
Connection: close
Content-Type: text/html
里面有一行luck: hellohacker.php, 打开看就是他需要file_get_contents获取到的文本的内容,最开始包含这个文件,始终不行,看下源码可以知道后面还有一个注释233333, 那么可以试试文件包含暴力把需要的文本放进去,直接用data:text/plain传过去,因为有符号之类的会比较麻烦,所以base64之后传进去, 过key1的payload如下
1
/index.php?key1=data:text/plain;base64,SGVsbG8gaGFja2VyIQ==
厦大的师傅们用的php://input传字符串进去
根据回显可以得知需要传key2了,要求是key2的md5的值要大于666666*666666,我的思路是 那么直接找一个字符串,散列值全是数字的即可,写一个python脚本跑了一下, 找到了1518375, md5散列值为93240121540327474319550261818423
传进去即可。厦大的师傅们用了字符串skwerl11, 他的md5值是1e21ff98693770b768e4a1a4a704811b, 1e是科学计数法,php在比较字符串和数字的时候会把字符串转化为数字,直到遇到不是0-9的值就会停止,所以这里会转化成1e21也就是 1*10^21,要找到这个字符串只有php能最快搞定, py是不懂php的黑了
过key2 的payload如下
1
/index.php?key1=data:text/plain;base64,SGVsbG8gaGFja2VyIQ==&key2=1518375
下面是key3, 他是需要key3的值转换成int之后小于666, 同时需要原始的值等于666, 自然想到了精度绕过,于是传了个665.99999记不清有多少个9了,由于的传的9不够,所以没过,厦大师傅是用的精度绕过,传值665.99999999999999。
机智的misc手说可以用16进制,然后输入了0x29a,搞定key3
过key3的payload如下
1
/index.php?key1=data:text/plain;base64,SGVsbG8gaGFja2VyIQ==&key2=1518375&key3=0x29a
最后一个是key4, 之前在文档看到了intval的表达范围是有限制的,取决于操作系统,所以用了溢出,溢出的结果参考这里
所以最终payload如下
1
/index.php?key1=data:text/plain;base64,SGVsbG8gaGFja2VyIQ==&key2=1518375&key3=0x29a&key4=999999999999999999999999999999999999999999999999996666
misc3 什么也看不到
感谢同济大学的神仙们提供的思路
打开是一个图片,丢进HxD看到尾部有一段字符串,把FF D9之后的部分复制出来
1
KA2DAMBQGAYDATRVGAYDCMBQGAYTAMBQGAYDAMBQGA3DANJQJ42DANJRGAZVCUZSHA4DSNKPGAYTCU2SGEYDGUKTGI4DQOJVJ4YDCMKTKIYTAM2RKMZDQOBRHEZTAOBUKAZTAMBYGEYDAMJQGAYDAMBQGAYDAMBQGAZDAMCOGA2DOOBXGQ3VEMRXGYYTMUBWGY3DAMBQGAYDAMBQGAYDAMBQGAYDEMBQGAYDAMBQGAYDAMBQGAYDIMRQGA4DAMBQGAYDAMBWGIYDAMBQGAYDMMSPGJHE6OCRHA2E6NBRGNITOOJVGAYDQMBQGA4TAMBQGQYTAMCTGEZDAMJQJ42DANJRGBHDMUJQKE4FCMBTHEZDSMRVGM2VAMBSGVIFAM2RGM4VANCQHAZE6MZQGUZVENCRGRHDINJTG4ZTIM2SGQ3DGMJTGQZVCNCQGQ3U6NRTKNHFANBZGRHVATZUGQ3TQNZUG5JDENZWGE3FANRWGYYDAMBQGAYDQMBQGAYDAMBQGYZDAMBQGAYDANRSJ4ZE4TZYKE4DITZUGEZVCNZZGUYDAOBQGAYDAMBQGA2DCNBQGMYE6NBQGU======
base32 decode之后
1
P4000000N500100010000000006050O405103QS28895O011SR103QS28895O011SR103QS288193084P30081001000000000000200N0478747R27616P6660000000000000002000000000000004200800000006200000062O2NO8Q84O413Q79500800090004100S12010O40510N6Q0Q8Q039292535P025PP3Q39P4P82O3053R4Q4N4537343R4631343Q4P47O63SNP494OPO4478747R27616P666000000800000006200000062O2NO8Q84O413Q7950080000000414030O405
这是一个看起来是有很多的0的但是有NOPQRS这种是不应该出现在16进制字符串的东西,同济大学的神仙们把NOPQRS替换成了ABCDEF,现在他就是一个十六进制字符串了
1
C4000000A500100010000000006050B405103DF28895B011FE103DF28895B011FE103DF288193084C30081001000000000000200A0478747E27616C6660000000000000002000000000000004200800000006200000062B2AB8D84B413D79500800090004100F12010B40510A6D0D8D039292535C025CC3D39C4C82B3053E4D4A4537343E4631343D4C47B63FAC494BCB4478747E27616C666000000800000006200000062B2AB8D84B413D7950080000000414030B405
这还没完,神仙们还注意到这个是B405结尾的,于是反序一下
1
504B0304140000000800597D314B48D8BA2B260000002600000008000000666C61672E7478744BCB494CAF36B74C4D3431364E3437354A4D4E3503B28C4C93D3CC520C535292930D8D0D6A01504B01021F00140009000800597D314B48D8BA2B2600000026000000080024000000000000002000000000000000666C61672E7478740A00200000000000010018003C480391882FD301EF110B59882FD301EF110B59882FD301504B050600000000010001005A0000004C
这个是一个肉眼可见的zip压缩包的十六进制了,于是写入一个二进制文件,解压提示有密码
然后修改14 00 09 00 为14 00 00 00 解压即可得到flag
1
flag{79ea433a752ece633a25cf6d1ddcc130}
misc4 Misc_Flow
解压提示可以看到一个rar和一个Hint.txt, 压缩包是有密码的,Hint.txt内容如下
1
2
3
Blasting code???
No No No!
There is another txt file.
自然想到了交换数据流,用工具查看但是始终找不到哪里有附加流,Hint.txt后面没有, flag.rar后面也没有,flag.rar里面有个flag.png, 但是需要解压密码,于是猜想需要搞定这个rar,然后在flag.png里面查看交换流。
比赛结束后请教了下复旦的师傅,师傅说交换流是在最外层的压缩包,就是主办方给的题目打包后面,用7z打开就能看到…..2333333
我和我们的misc手都默认第一层是打包题目用的,压缩包的里面某个文件放着交换数据流文件,解压的时候我都是直接右键,选择解压到xxx, 所以自然看不到藏在后面的东西。
1
$ notepad Misc_Flow:password.txt
打开就是rar的密码,
1
c1d6159d94cc00dfeafde4f5ff7639ade491f7639ade4f5ff7639ade491feaf5ff7639ad
解压可得flag
misc5
打开是一个pcapng 数据包,能看到里面有大量的tls数据包和icmp数据包
icmp数据包有明显的人为成分, 里面有自定义的大量的aaaaaa字符串

请教了复旦大学的师傅们,师傅说根据每个icmp包的a的数量,依次记下来,然后转成ascii, 再凯撒就搞定了
太麻烦了,眼花, 没有去做一遍了
神仙的思考方式和我这个凡人就是不一样
音频
MISC手au打开,一段音频,然后放弃
参考厦大师傅推荐的wp
反正本辣鸡看不懂
树莓派
扫一波,开了三个端口 21,22, 3xxxx,顺手一个admin admin进了ftp, 下载了一个server可执行文件下来,然后用admin admin登录进去了ssh, history一下,有一个sudo su -, 然后调用摄像头拍照的命令
自己试了下,发现没在sudo组里面,意思是需要pwn掉这个server, 我们队伍没有pwn手,所以弃疗
比赛结束问了隔壁的师傅,师傅说登进去,下载下来,pwn掉,就是root权限了
师傅们一帆风顺的走过了我们的拦路虎哈哈哈哈
wp 没有,再见
干货
第二天的分享会,企业的工作人员给我们分享了一些过防火墙的一些经验,值得注意得是,安全狗是他们公司的产品,所以狗有没有这些bug是很明显的了
安全狗: 听说你们想过我?
下面是分享的内容:
- 找源ip
- 找历史解析地址
- github源码
- 子站ssrf
- 资源限制
- 大的post包只检查前面几个字节
- 协议绕过 使用form-data上传而不是x-www-form-urlencode 一般不会检测前者
- 协议解析不一致
文件名包含换行符, 绕过waf
多个comtent waf会检测第一个,服务器会解析所有
- http允许上传多个文件, waf只会检测第一个文件,可以把自己的payload放到后面的包
- 空文件名
- http协议要求文件名 filename=”xxx” 但是tomcat和apache兼容没闭合的,可以绕过waf
- 空白符绕过,使用正则的waf 的\S mysql 的正则不同,mysql兼容%3c等
- waf里面用正则的可以考虑用正则回溯拖垮waf
- 文件包含绕过
- 相对../检测,waf会检测连续的../,可以用不连续../ 比如插入./绕过
- 绝对路径文件包含 /etc/././passwd
- 根据访问频率绕过,使用代理
跋
-
自己太菜,好好学习
-
见识到神仙们的厉害了, 以后就吹自己和打过defcon的师傅们同台竞技过
-
比赛结束的时候天枢的师傅们互相击掌祝贺,我们给各位师傅鼓掌啦啦啦
-
这次比赛的逆向有点恼火, 我们的re手说: 师傅们都在分享自己如何遇到坑如何爬起来,我们只能分享如何遇到坑并且爬不出来 哈哈哈哈
-
某师傅说,工控题目,打开了msf, search了一下,然后use, set rhost, 不知道为什么flag就弹回来了,他自己都不知道发生了什么, 大佬们都是随手拿flag的,不得不膜, msf打ctf也是6666
- 做工控题目的时候扫了1-65535, 没一个端口开了(现在想想,我个zz,忘记加 -P 和 -sU了),当时一脸懵逼, 以为是网络层的题目
-
搞树莓派的题目的时候,扫了下C段,发现很多题目中没有的ip, 当时以为是题目的一部分,打开下载了一些东西下来,后来放题了发现是我刚刚扫出来的题目 然而并没有什么用,vegatable is still vegatable
-
请教厦大的师傅web2的时候,师傅说手快一血,我……emmmm
-
武大的师傅说,要给队友一个肯定的眼神
- 拿flag是不可能的了,这辈子都不可能拿flag的。 题目又不会,只能看看各位神仙师傅的wp才能勉强说是我是搞安全的。 和神仙们一起打ctf就像是回了家一样,这里的师傅都好有才,说话又好听,我超喜欢这里的。
- 比赛时间 2017.12.23 , 厦门风景真好,还比成都暖和,厦大也好大呀
以上
2017-12-27 01:13:13