第四届世安杯划水日记
两位队友的文章 @a-lie-Z链接地址 和 @primykq链接地址
ctf入门级题目
ereg传入数组时不会返回FALSE,strpos传入数组也不会反回FALSE…
此外ereg还可以使用%00截断
类型
php代码审计的题,很喜欢
对于x1,注意到case 0后边没有break,直接传入x1=0即可
对于x2,构造json字符串。其中x21不能为数字且x21>”2017”,传入x21=2018a。x22出题点应该是array_search是弱比较,只需要有一个键为0,就可以绕过。
对于x3,直接md5碰撞,脚本大概长这样…
登录
右键查看源码发现提示,密码为五位数字,想到爆破。看一下验证码,猜想应该是第一次请求会生成vcode并保存在session,后面每一次请求与保存的vcode比对并生成新的vcode。所以写脚本每次请求需要带入phpsessid(一开始没注意导致一直抓不到验证vcode的页面,还以为出bug了…)
基于此,写python脚本爆破,这里又踩了一个坑,没错,我是从10000开始爆破的,五位数字…只想说人生经验还不够丰富
好像burp可以用intruder模块直接爆破,有一个选项是可以使用返回的页面作为下一次请求的参数,很适合这个题。
admin
php://input伪协议+未处理的post数据绕过第一层,然后利用include+php://filter/read=convert.base64-encode/class.php读源码,这里很好奇无法读取flag.php。
先读取index.php发现对$file参数做了过滤.构造序列化字符串(其中需要给一个变量赋值),然后程序执行echo调用_toString,就可以getflag。
结语
然后就…没有了。
不说了,虽然菜,但还是玩的很开心的。
ps: 希望下午校赛可以取得好成绩