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,而NULLFALSE类型不同,所以不满足条件,构造nctf=1%00%23biubiubiu,得到flag

bypass again

对代码进行审计,可以利用MD5函数漏洞,当传入的为数组时,返回值为NULL

也可以传入一个MD5值为0e开头的值,因为这样会被认为是科学计数法,都等于0,所以MD5都相等。

变量覆盖

 

这里要说明一下extract()函数,该函数会将数组的键名作为变量名,将键值作为变量名,当变量名有相同的时候会将原来的变量值覆盖,所以只要传入的passthepassword_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

 

 

原文地址:https://www.cnblogs.com/zesiar0/p/12659131.html