CTF札记二

本文是CTF题的复现,我尽量用自己的文字将writeup解释清楚。


0x1第一题

ereg函数截断


一个php代码审计题,上代码:

首先第一层检查需要绕过ereg漏洞,百度可以知道存在截断的问题:ereg读到%00的时候,就截止了,
那么在字符串里面包括%00即可;
接着需要长度小于8但要大于9999999,想到hint里的科学方法,使用科学计数法即可;
还要求有-,最后构造password=1e9%00-,直接在地址栏提交,通过表单提交不会把%00看作截断符。

0x2第二题

文件上传测试,提示上传PHP文件。

Burp抓包,将文件名改成 1.jpg.php 即可。

0x3第三题

打开页面一直弹窗,阻止弹窗后,查看网页源码。

发现flag加密,去Unicode解密即可。

KEY{J2sa42ahJK-HS11III}

0x4第四题

右键查看元素,GB312,想到款字节注入。

爆出所有的数据库,再结合题目,得到flag。

0x5第五题


直接修改hosts文件。

0x6第六题

可以看到,后台过滤了相关的sql查询代码。
这里考虑用%00绕过关键字过滤。

0x7第七题

访问网址给出源代码,这里我稍微注释下:

flag In the variable !

提示flag在变量里。正则匹配只能大小写字符和数字。 eval("var_dump($$args);");打印出变量的值。
利用超全局数组 GLOBALS 可以打印出所有变量。

0x8第八题

JSPFUCK??????答案格式CTF{**}
JsFUCK又不是第一次见了,查看网页源码,复制到控制台,回车就可以啦!

0x9第九题

过狗一句话,题目给了代码如下:

看提示,猜测 indexphp 就是shell 于是直接利用
用assert执行任意代码 ,题目中有$_GET['s'];于是构造代码扫描目录


访问http://120.24.86.145:8010/flag.txt得到flag

0x10第十题

前女友,打开网页是这个,有意思:

查看源码,发现有code.txt,查看之:

根据php代码,以GET形式传递3个值,其中v1变量值 != v2变量值,if中的第二个判断条件用的是 ==,我们可以利用 "0x" == "0a"的判断结果为1,找出经过加密后的两个md5值以0开头,接下去以都相同的值,直到遇到的字母的两个字符串。

php中md5()函数漏洞和strcmp()函数漏洞的利用
所以简单构造下数组就可以了
http://118.89.219.210:49162/?v1[]=1&v2[]=2&v3[]=1