一道DDCTF题–滴~

一道DDCTF题–滴~

这道题涉及到常见的编解码、变量覆盖、过滤等知识点,接下来看题。

01.实战

题目地址:http://117.51.150.246

打开网页显示如下:

一道DDCTF题–滴~_第1张图片

可以看到jpg参数是一串字符串,而且提到了base64,

1.试图对其解密得到:

NjY2QzYxNjcyRTZBNzA2Nw==

2.发现还是base64的内容,再次解密得到:

666C61672E6A7067

3.看这串数字和字母的组合字符串,像是十六进制数,试着用十六进制解密得到:

flag.jpg

4.通过一系列操作得到了flag.jpg,那么我们可以联想到,通过修改jpg参数的内容来获取想要的内容,这就是本地文件泄露。

然后我们逆序对index.php经过十六进制加密,两次base64加密,让jpg=加密后的内容。传入jpg参数,得到:

一道DDCTF题–滴~_第2张图片

显然,我们可以尝试把img中src里的内容用base64解密,得到:

'.$_GET['jpg'].'';
$file = preg_replace("/[^a-zA-Z0-9.]+/","", $file);
echo $file.'
'; $file = str_replace("config","!", $file); echo $file.'
'; $txt = base64_encode(file_get_contents($file)); echo ""; /* * Can you find the flag file? * */ ?>

得到这样一段代码后,看到注释里有一个博客地址,打开看一下:

一道DDCTF题–滴~_第3张图片

感觉没什么关系,再回过来看看注释,发现还有一个日期的注释,于是顺着线索找到了下面这篇文章:

一道DDCTF题–滴~_第4张图片

文章讲的是swp文件泄露,那到底应该去找哪一个swp文件呢?应该博客里有提到,于是试一试博客里说到的.practice.txt.swp,果然得到了

一道DDCTF题–滴~_第5张图片

这个flag!ddctf.php里面应该有我们想要的,但是不能直接在地址栏里输入这个文件名字,因为代码里提到有正则的存在,过滤掉了!,但是另一条str_replace语句提示,config和!之间有替换关系,所以最终构造的应该是f1agconfigddctf.php的三次编码后的值,最后传入jpg参数,得到:

一道DDCTF题–滴~_第6张图片

和上面相同的思路再来一遍,得到:


这题最后有两种解法,一种是直接变量覆盖,两个参数都置空就能绕过了,这样就拿到flag了

一道DDCTF题–滴~_第7张图片

还有一种就是变量覆盖+php伪协议,?k=php://input&uid=1 post数据传1

一道DDCTF题–滴~_第8张图片

02总结

这道题偏脑洞,但是套路还是在其它的ctf题里见过,可以多练练,干巴爹!

你可能感兴趣的:(CTF)