Misc 杂项
build_error
以下のファイルが渡される。このファイルをうまいこと実行出来たらFlagゲットできるらしい。
传递以下文件: 如果你能很好地执行这个文件,你就可以得到 Flag。
- main.o
- one.o 一.o
- Makefile 生成文件
実行ファイル作るためにmakeした。 我做了一个可执行文件。
a, bないので無理いわれる。 a,b,所以这是不可能的。
Ghidraで見る。 在 Ghidra 中观看。
main.o
one.o 一.o
Exportsできてませんね。 我无法导出它。
新たに定義して一緒にコンパイルする。 定义一个新的并一起编译它。
int a = 0xb;
int b = 0xc;
フラグ判定でabcの和を聞かれ正誤判定されるが、 您将被问及国旗判决中ABC的总和,它将被判断为正确或错误。
別にaとbが合ってる必要ないので適当にやって動的解析する方向にします。
A和B不一定是正确的,所以我会适当地做,做动态分析。
Makefileも適当に書き直します。 Makefile 也将被适当地重写。
CC=gcc
OBJ=main.o one.o definitions.o
TARGET=main
all:$(TARGET)
$(TARGET):$(OBJ)
$(CC) -o $(TARGET) $(OBJ) -no-pie
definitions.o: definitions.c
$(CC) -c definitions.c
後は出来たファイルを解析します。 之后,我们将分析生成的文件。
flag判定のところにBreakPointつけて回します。
将 BreakPoint 附加到标志判断并转动它。
┌──(root㉿kali)-[/home/kali/Downloads]
└─# gdb main
Reading symbols from main...
(No debugging symbols found in main)
gdb-peda$ disass main
Dump of assembler code for function main:
0x0000000000401136 <+0>: push rbp
0x0000000000401137 <+1>: mov rbp,rsp
0x000000000040113a <+4>: sub rsp,0x30
0x000000000040113e <+8>: mov QWORD PTR [rbp-0x28],0xc
0x0000000000401146 <+16>: mov QWORD PTR [rbp-0x20],0xb
0x000000000040114e <+24>: mov QWORD PTR [rbp-0x18],0x4b
0x0000000000401156 <+32>: mov QWORD PTR [rbp-0x10],0x0
0x000000000040115e <+40>: mov QWORD PTR [rbp-0x8],0x0
0x0000000000401166 <+48>: call 0x40121a <one_init>
0x000000000040116b <+53>: mov DWORD PTR [rbp-0x2c],0x0
0x0000000000401172 <+60>: jmp 0x40119d <main+103>
0x0000000000401174 <+62>: mov eax,DWORD PTR [rbp-0x2c]
0x0000000000401177 <+65>: cdqe
0x0000000000401179 <+67>: cmp QWORD PTR [rbp-0x28],rax
0x000000000040117d <+71>: jle 0x401184 <main+78>
0x000000000040117f <+73>: add QWORD PTR [rbp-0x18],0x1
0x0000000000401184 <+78>: mov eax,DWORD PTR [rbp-0x2c]
0x0000000000401187 <+81>: cdqe
0x0000000000401189 <+83>: cmp QWORD PTR [rbp-0x18],rax
0x000000000040118d <+87>: jge 0x401194 <main+94>
0x000000000040118f <+89>: add QWORD PTR [rbp-0x20],0x1
0x0000000000401194 <+94>: add QWORD PTR [rbp-0x28],0x1
0x0000000000401199 <+99>: add DWORD PTR [rbp-0x2c],0x1
0x000000000040119d <+103>: mov eax,DWORD PTR [rbp-0x2c]
0x00000000004011a0 <+106>: cdqe
0x00000000004011a2 <+108>: cmp QWORD PTR [rbp-0x20],rax
0x00000000004011a6 <+112>: jg 0x401174 <main+62>
0x00000000004011a8 <+114>: mov rdx,QWORD PTR [rbp-0x28]
0x00000000004011ac <+118>: mov rax,QWORD PTR [rbp-0x20]
0x00000000004011b0 <+122>: add rdx,rax
0x00000000004011b3 <+125>: mov rax,QWORD PTR [rbp-0x18]
0x00000000004011b7 <+129>: add rax,rdx
0x00000000004011ba <+132>: mov QWORD PTR [rbp-0x10],rax
0x00000000004011be <+136>: mov rdx,QWORD PTR [rip+0x2e5b] # 0x404020 <a>
0x00000000004011c5 <+143>: mov rax,QWORD PTR [rip+0x2e58] # 0x404024 <b>
0x00000000004011cc <+150>: add rdx,rax
0x00000000004011cf <+153>: mov rax,QWORD PTR [rip+0x2e5a] # 0x404030 <c>
0x00000000004011d6 <+160>: add rax,rdx
0x00000000004011d9 <+163>: mov QWORD PTR [rbp-0x8],rax
0x00000000004011dd <+167>: mov rax,QWORD PTR [rbp-0x8]
0x00000000004011e1 <+171>: cmp QWORD PTR [rbp-0x10],rax
0x00000000004011e5 <+175>: jne 0x401204 <main+206>
0x00000000004011e7 <+177>: mov rax,QWORD PTR [rbp-0x10]
0x00000000004011eb <+181>: mov rsi,rax
0x00000000004011ee <+184>: lea rax,[rip+0xe0f] # 0x402004
0x00000000004011f5 <+191>: mov rdi,rax
0x00000000004011f8 <+194>: mov eax,0x0
0x00000000004011fd <+199>: call 0x401040 <printf@plt>
0x0000000000401202 <+204>: jmp 0x401213 <main+221>
0x0000000000401204 <+206>: lea rax,[rip+0xe06] # 0x402011
0x000000000040120b <+213>: mov rdi,rax
0x000000000040120e <+216>: call 0x401030 <puts@plt>
0x0000000000401213 <+221>: mov eax,0x0
0x0000000000401218 <+226>: leave
0x0000000000401219 <+227>: ret
End of assembler dump.
gdb-peda$ b *0x00000000004011e1
Breakpoint 1 at 0x4011e1
gdb-peda$
rbp-0x10
のとこ0x7fffffffe180
のアドレスに答えが入ってます。
rbp-0x10
答案就在这个地址里 0x7fffffffe180
。120
です。 120
是。
TsukuCTF23{120}
content_sign
以下のファイルが渡されます。Autherと編集日時を答えるみたいデス。
传递以下文件: Auther 和编辑的日期和时间似乎得到了回答。
- signed_flag.png
とりあえずstrings見ます。 我现在来看看字符串。C2PA
の文字があるので以下入れます。
C2PA
有一个角色,所以把它放在下面。
回します。 转。
┌──(root㉿kali)-[/home/kali/Downloads]
└─# c2patool signed_flag.png
{
"active_manifest": "urn:uuid:632a603d-06bf-4660-ac5a-e94f41f61040",
"manifests": {
"urn:uuid:d67f9244-8583-43d2-bdb6-12082bbb76e7": {
"claim_generator": "CanUseeMe c2patool/0.7.0 c2pa-rs/0.28.3",
"title": "Tsukuctf_20XX",
"format": "image/png",
"instance_id": "xmp:iid:e18e08ca-8259-4226-988e-7ed2f58e1010",
"thumbnail": {
"format": "image/png",
"identifier": "self#jumbf=c2pa.assertions/c2pa.thumbnail.claim.png"
},
"ingredients": [],
"assertions": [
{
"label": "stds.schema-org.CreativeWork",
"data": {
"@context": "https://schema.org",
"@type": "CreativeWork",
"author": [
{
"@type": "Person",
"name": "TSUKU4_IS_H@CKER"
}
]
},
"kind": "Json"
...省略
答えのフラグ形式を組み合わせるだけ。 只需结合答案的标志格式即可。
TsukuCTF23{TSUKU4_IS_H@CKER&2023-12-08T13:00:26+00:00}
TsukuCTF23{TSUKU4_IS_H@CKER&2023-12-08T13:00:26+00:00}
idiot 白痴
見つけたので残しておきます(ニッコリ 我找到了,所以我会离开它(微笑)
ここから解けなかったやつ 我无法从这里解决的问题
Rev – title_screen 修订版 – title_screen
NESのファミコンのアセンブリっぽい。初めて見た。
它看起来像一个 NES NES 程序集。 我是第一次看到它。
とりあえずエミュレートする。 暂时效仿。
chr作成。
nesファイル作る。 NES文件制作。
┌──(root㉿kali)-[/home/kali/Downloads/source_code]
└─# ca65 main.asm -o main.o
┌──(root㉿kali)-[/home/kali/Downloads/source_code]
└─# ld65 main.o -C main.cfg -o main.nes
ld65: Warning: main.cfg(5): Segment 'CHARS' overflows memory area 'ROMCHR' by 8192 bytes
ld65: Error: Cannot generate most of the files due to memory area overflow
メモリ足りないって言われるのでcfg
を編集する。
据说内存不够,所以 cfg
编辑.
MEMORY {
HEADER: start = $0000, size = $0010, file = %O, fill = yes;
ROMST: start = $8000, size = $7ffa, type = ro, file = %O, fill = yes, define = yes;
ROMINFO: start = $fffa, size = $0006, type = ro, file = %O, fill = yes, define = yes;
ROMCHR: start = $0000, size = $4000, type = rw, define = yes; //ここ編集
}
SEGMENTS {
HEADER: load = HEADER, type = ro;
STARTUP: load = ROMST, type = ro, define = yes;
VECINFO: load = ROMINFO, type = ro, define = yes;
CHARS: load = ROMCHR, type = rw;
}
FEATURES {
CONDES: segment = RODATA,
type = constructor,
label = __CONSTRUCTOR_TABLE__,
count = __CONSTRUCTOR_COUNT__;
CONDES: segment = RODATA,
type = destructor,
label = __DESTRUCTOR_TABLE__,
count = __DESTRUCTOR_COUNT__;
}
これでnesファイルが出来るので回してみる。 现在您已经有了一个 NES 文件,让我们转动它。
エミュレータは以下を利用した。 模拟器使用了以下内容:
はい???? 是的????
ここからchrファイル作成地獄に突入する。 从这里开始,您将陷入创建 chr 文件的地狱。
こんな感じで読めそうにないピクセルを削除していく。
删除不太可能像这样可读的像素。
以下は私が作成した芸術作品たちである。 以下是我创作的一些艺术作品。
是非ともここで供養させてほしい。 无论如何,我想在这里举行追悼会。
エントリーナンバー1 – いそいそ 条目编号 1 – Isoiso
エントリーナンバー2 – よしよさ 条目编号 2 – Yoshiyosa
エントリーナンバー3 – 8888 条目编号 3 – 8888
エントリーナンバー4 – よしよ 条目编号 4 – 好的
エントリーナンバー5 – Lv1 条目编号 5 – Lv1
エントリーナンバー6 – X 条目编号 6 – X
エントリーナンバー7 – ここここここここここここここここここここここここ
条目编号 7 – 这里,这里
NES難しい。 NES困难。
なんもわからん。 我什么都不懂。
正解はasm
に書いてあるこのdata
のマッピングとbmp
を比べるだけらしい。
似乎正确答案 asm
data
只是比较一下 bmp
和 的这个映射。
なんもわからん。 我什么都不懂。
おそらく問題設定として「bmp
からchr
作る」のではなく、「昔作ったchr
の名残で出てきたbmp
」が問題のbmp
ファイルだからこの方法でのエミュレートではそもそも問題の趣旨と違うので間違った答えが出るのだと思う。
据推测,问题设置不是“由”,而是“ chr
它是很久以前的 chr
残余物出来 bmp
的”,所以以这种方式模仿它与 bmp
问题的目的不同 bmp
,所以我认为会给出错误的答案。
その発想はなかった。頭カチコチ。 我没有那个想法。 头滴答作响。
まとめ 总结
チームのPro OSINTerたちのお陰で初めて一桁台の順位にいきました!!!
感谢团队的Pro OSINTers,我们第一次达到了个位数!
とても楽しかった!!! 真是太好玩了!
(次回からは自分も貢献できるように頑張ります。)
(从下次开始,我会尽我所能做出贡献。 )
原文始发于@schectman-hell:TsukuCTF23- Writeup