CTF赛题全解之CTF成长之路(一)

这段时间一直在看CTF的资料,所以打算把这段时间刷到的一些比较典型的题写出来分享一下,长期连载,欢迎关注。

题目名称:ics-04

进入题目发现是一个所谓的工控云管理系统,点了几下发现都是没有超链接的。

通过查看源代码找到登陆页面和注册页面是真是存在链接的。注册账号后发现提示“普通用户登录成功,没什么用”。所以联想到考点可能是越权,发现cookie的user字段为加密的md5解密还原后重新加密为自定义内容发现无法切换为其他用户,之后尝试注入发现也无法登录。所以考虑在忘记密码那里尝试。

这里输入我注册的用户名“admin”发现可以做修改密码操作。

在此继续尝试注入

发现返回值变成了cetc所以判断存在注入。

获取字段

获取到密保问题和答案,但是验证时发现密保答案不正确。所以更换思路,去猜解密码的md5值最终获取账号密码,登录系统获取flag。


题目名称:ics-05

打开后界面同上一题一样。同样的方法获取到可访问的链接,但是打开页面发现什么都没有。

查看源代码发现一个特殊的链接

访问后发现竟然能够显示我提交的page参数内容。

试了一会感觉这个地方没这么简单,所以尝试读取文件../../../../../../etc/passwd

可以读到,所以下一步读取文件源码。


最终读取的php源代码如下:

<?php
$page = $_GET[page];
if (isset($page)) {
if (ctype_alnum($page)) {
?>
    <br /><br /><br /><br />
    <div style="text-align:center">
        <p class="lead"><?php echo $page; die();?></p>
    <br /><br /><br /><br />
<?php
}else{
?>
        <br /><br /><br /><br />
        <div style="text-align:center">
            <p class="lead">
                <?php
                if (strpos($page, 'input') > 0) {
                    die();
                }
                if (strpos($page, 'ta:text') > 0) {
                    die();
                }
                if (strpos($page, 'text') > 0) {
                    die();
                }
                if ($page === 'index.php') {
                    die('Ok');
                }
                    include($page);
                    die();
                ?>
        </p>
        <br /><br /><br /><br />
<?php
}}
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
    echo "<br >Welcome My Admin ! <br >";
    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];
    if (isset($pattern) && isset($replacement) && isset($subject)) {
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }
}
?>


重点去看他的preg_replace而且三个参数都可控。所以构造参数去执行代码,先去获取目录。

发现存在一个s3chahahaDir目录,用浏览器去访问一下发现存在flag.php

利用上面的方法来读取文件内容,获取flag。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 共1条

请登录后发表评论