第六届浙江省大学生网络与信息安全竞赛-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 |
|