CG-CTF wp
签到题
按F12或者右键查看源码,得到flag
MD5 collision
如果经过MD5编码的值是以“0e”开头,则会被认为是科学计数法,不管后面是什么,结果都为0
QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a这些MD5值都为0
签到2
打开页面要求输入一串字符,但是长度被限制了,按F12修改maxlength,即可输入完整的字符串
这题不是web
查看源码,没有思路。页面里有一张动态图,很可疑,下载后用记事本打开,在最后一行发现flag
php decode
对代码进行分析,应该是对题目给出的字符串进行编码,然后依次处理,最后得出flag,但是题目给的是eval()函数,改成echo,得到flag
文件包含
题目给出提示:传说中的LFI,进入页面点开链接,发现
那就利用本地包含读取PHP敏感文件
得到一串加密了的编码,进行base64解密得到flag
COOKIE
打开页面,查看源码,什么也没用,用bp进行抓包试一下
联想起提示0==not,修改cookie=1,得到flag
/x00
对代码进行分析,用get的方式输入nctf的值且必须有数字和#biubiubiu
但是输入后却发现输出的是第三条(不是很明白),想起题目为/x00,上网搜了一下,ereg()存在漏洞,利用%00可以对正则进行绕过,返回NULL,而NULL和FALSE类型不同,所以不满足条件,构造nctf=1%00%23biubiubiu,得到flag
bypass again
对代码进行审计,可以利用MD5函数漏洞,当传入的为数组时,返回值为NULL,
也可以传入一个MD5值为0e开头的值,因为这样会被认为是科学计数法,都等于0,所以MD5都相等。
变量覆盖
这里要说明一下extract()函数,该函数会将数组的键名作为变量名,将键值作为变量名,当变量名有相同的时候会将原来的变量值覆盖,所以只要传入的pass和thepassword_123相等就行了。
伪装者
用bp抓包,在Header加入XXF头发现没有用,试一下Client-Ip,发现有用
补充:
X-Forwarded-For/X-Client-IP/X-Real-IP/CDN-Src-IP,这些都可以对IP进行伪造。
文件上传
看题目,让我们上传一个文件,只能上传jpg,gif,png后缀的文件
再上传后缀为png的文件,又发现必须是后缀名问php的文件
所以题目要求应该是上传后缀为jpg,gif,png的文件,但是必须被识别为后缀php的文件,所以应该找到它是如何识别的。我们发现它是根据./uploads目录下的basename进行识别的
我在./uploads后面加上1.php,果然如图所示
所以接下来我在./uploads后面加上1.php%00,%00需要进行url编码
拿到flag
sql注入
进行代码审计,让我们输入user和pass然后在数据库中找到user,如果user是admin则通过,所以我们可以构造$user=admin’)#,将后面直接注释掉,就可以直接返回user
pass check
进行代码审计,要求我们用post方式传入pass,然后与pass1进行比较
我们需要知道的是,strcmp()函数对两个字符串类型进行比较,如果相等的话则返回0,但是如果传入的不是字符串类型则直接返回0,所以通过传入一个数组则可以直接绕过,构造$pass[]=1即可得到flag
起名字真难
还是进行代码审计,要求$key必须与'54975581388'相等,但是$key字符又不能
有数字,所以可以通过转换进制的方法实现,那么就只有用十六进制了,所以?Key=0xccccccccc
密码找回
题目要求重置管理员admin的密码,但是发现在输入框中user不能修改,所以用bp进行抓包,将$user=admin,在把URL中的user1改为admin的base64编码值
综合题
一大堆奇奇怪怪的东西,先用控制台里的console里跑一下
再访问这个页面
源码里也什么都没有,尝试用bp抓包看一下
得到提示,但是不知道什么意思,上网搜一下
继续访问,然后得到一个下载文件,得到flag
sql注入2
先查看source
代码审计,输入正确的user,然后从数据库中调出数据与输入pass的MD5值进行比较,我们可以进行sql注入,$user=’ union select MD5(123)#,用’将之前的代码闭合,那么原语句就变成了
Select pw from ctf where user = ‘’union select MD5(123);(后面全部变成了注释),然后$pass=123,那么等式就可以成立了
密码重置
我们先对提示进行分析
管理员邮箱观察一下就可以找到,那么就观察一下在源代码里面看一下
找到邮箱
vi编辑器异常退出会留下备份文件
所以我们可以访问.submit.php.swp
对代码进行审计,$token的长度需要等于10,且$token==’0’
弱类型bypass
所以不需要比较$token和‘0’的类型,等式成立
file_get_contents
页面什么都没有,查看源码
关键点在file_get_contents()函数,上网搜一下
所以写入meizijiu
得到flag
变量覆盖
代码审计,foreach($_get as $key => $value)先对这个函数了解
也就是说遍历数组,将数组的键值赋给$key,将元素的值赋给$value
然后又将$key的值作为新的变量名
所以构造$name=meizijiu233,得到flag