CUMTCTF题解
2020-06-09 / 灬魔龙   

WEB

入门题:

1、array



从表中可知道改=该正则表达式^[1-9]+$表示要匹配一次或多次1到9的数字
从代码可以知道需要把X-Forwarded-For设置为127.0.0.1,才可以往下执行


如果传入的element是数组则返回NULL,而NULL和FALSE类型不一样所以可以绕过,
pass是数组的话也返回NULL,而pass1不为空,所以可以绕过strcmp函数

于是传element和pass的参数为数组形式然后抓包


添加X-Forwarded-For:127.0.0.1将ip修改为127.0.0.1从而获得flag.

2、easy_file_get_contents






所以构造payload,path=flag.php将flag.php中的内容复制到path中,


所以构造user这段payload来满足if语句
从而获得flag

3、chang_script

本地文件包含漏洞





Eval()会将参数字符串当作命令语句执行,故利用类似单引号闭合的原理可以注入语句。构造payload如下


然后获得url编码的flag,进行url解码即可获得最终flag

挑战题:

1、源代码


由题目知道需要查看源代码


去掉其中的歌词获得flag

2、colorSnake


靠手玩获得flag是不可能的


看源代码发现js脚本


查看脚本发现得分的php,这里面有个xhr,介绍一下xhr,xhr叫XMLHttpRequest ,XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。


访问该界面


发现有json格式的东西,把里面的msg部分的内容unicode解码得到一句话,
可以猜到应该是用这个去访问页面去增加得分,每刷新一下这个页面发现score加一了,但是刷新的太快又会重新置0


所以可以规律性的停一秒刷新一下,也可以写个脚本从而获得flag.

获得flag

3、备份


题目有很多备份要从中找到flag就写个脚本,把有flag的备份文件显示出来

在第998个备份文件里获得flag.

4、上传一、二


发现是php网页,但是不能上传php文件只能上传图片

于是上传一张图片,然后抓包修改图片后缀为php

得到flag发现还送了一个上传二的flag,于是两题flag到手

上传二需要Content-Type为image才能看到flag

5、Cookie?


发现要用管理员身份登录,于是抓包


发现user是guest,于是修改user为admin

发现一张图片

打开没发现什么


百度识图,所以这题应该是维吉尼亚密码


解密获得flag

6、is hash safe?


打开发现又要是管理员,于是抓包

将role改为admin并没有什么变化,题目说有东西没删掉所以应该有备份的文件尝试phps,php无果后

尝试.swp发现有文件

我们可以用vim -r命令去回复备份文件vim -r admin.php.swp,发现源代码

这题考的是hash长度拓展攻击

我们可用hashpump这个工具来伪造admin的身份,记得要把数据URL编码一下

最后获得flag

7、Logic


查看源代码

发现一个php,访问它

又是说不是admin,继续抓包

没什么发现,所以猜测和上题一样有备份文件,尝试.swp

发现代码,说明token是10个0

再次查看源代码发现admin是chenyurui邮箱格式是gmail,
而且这里显示了编辑器是Vim,而Vim编辑器的备份文件是.swp。


然后登陆

获得flag

8、听说你会面向对象


打开发现题目源代码

发现是PHP反系列化题目
https://www.freebuf.com/articles/web/167721.html

所以写一个php构造这个序列

然后用GET方式传data

发现错误,所以是_wakeup函数的问题,PHP当序列化字符串中表示对象属性数的值大于真实的属性个数时会跳过__wakeup()的执行。


所以把Admin后的数值改得比1大就得到flag

9、上传三



php,php2,php3,php4,php5等都过滤掉了,直到试到phtml的时候回显出来一句话,发现是条件竞争题目

于是写脚本

耐心等待几分钟从而获得flag

本文链接:https://devildragons.github.io/2020/06/09/CUMTCTF-web/