ACTF新生赛include

ACTF好像是浙大的ctfoj,acm强 ctf也强 xmsl,来试一下 ACTF的题目
复现平台:buuoj.cn
1.png
一打开就看到一个tips,直接点开

51FAA2A5-20E2-4A8F-9B6D-720D61F54B74.png
发现这个can you find out the flag 观察url,很容易看出来是个文件包含include.php,老php伪协议了,
payload php://filter/convert.base64-encode/resource=flag.php

2.png
老base64了,解码 get flag
3.png

ACTF新生赛exec

简单的命令联合执行
123.png
一打开一看可以执行命令,多半是命令执行,这题主要是linux下可以用|或;做分隔符执行两条命令,直接fuzz一下没任何过滤
所以思路找flag 当前目录试一下
111.png
发现当前目录只有一个index.php 所以列根目录
33EA35AB-953D-4AFF-A2FB-1EFC7F351087.png
根目录下直接有flag 读取就vans辣 payload 127.0.0.1;cat /flag
9DC654C6-66CA-436B-8459-6004B593C981.png

ACTF新生赛 backupfile

123.png
一提到备份就想到就这么几种

index.php.bak
index.php~
backup.zip
www.zip
wwwroot.zip
source.zip

index.php.swp
随便拿一个试一下,发现是第一个,直接down下来看看源码
123.png
这里面可以看到传参key要和字符串相等,这里还特意用intval将字符串key转成int型,这就是php弱类型的魅力了,实践是检验真理的唯一标准
123.png
神奇的返回true but why?
首先就是 ==和===的区别
==是比较运算,它不会去检查条件式的表达式的类型
===是恒等,它会检查查表达式的值与类型是否相等
所以我们再试试
123.png
很容易就明白了 构造payload?key=123 get flag
123.png

BJDCTF2020新生赛easy_md5

对于我这个弱鸡来说 一般easy===死,但这题目还好
7C5F035E-7A7C-4D53-9E7F-33259110F830.png
一开始本能往sql想了,后来f12抓包一下 发现了一个hint
123.png
原来跟sql注入真有点关系,这里还用到了php的黑魔法
ffifdyop经过md5($password,true)过后恰好结果' or 1=1的sql注入漏洞,也就是常说的万能密码,直接查询
12332.png
发现是一个这个页面
123.png
审查元素发现这段代码,这种题目一看是md5()就明白啦,md5和sha1只能对字符串进行哈希加密,如果遇到其他的比如数组会返回false false==false 所以返回true
构造payload:a[]=1&b[]=2
123.png
发现这样的,和刚才的没啥区别,只是变成了post提交
123.png
直接hackbar提交

BJDCTF2020新生赛 ZJCTF,就这

123.png
首先要读取文件内容为 I have a Dream 好说 想到了data://伪协议
text=data://text/plain,I%20have%20a%20dream,读代码,然后就会进行包含,好了,还是那个伪协议,最终payload

data://text/plain,I%20have%20a%20dream&file=php://filter/convert.base64-encode/resource=next.php 

解密完代码如下
123.png
发现是preg_replace /e 下的代码执行问题
前辈们贴了个地址,自认为写不出来,所以贴出文章

深入研究preg_replace与代码执行
https://xz.aliyun.com/t/2557

直接构造payload next.php?\S*=${eval($_POST[t4rn])}
123.png
直接在根目录下找到flag!