TsukuCTF23- Writeup

WriteUp 5个月前 admin
36 0 0

Misc 杂项

build_error

以下のファイルが渡される。このファイルをうまいこと実行出来たらFlagゲットできるらしい。
传递以下文件: 如果你能很好地执行这个文件,你就可以得到 Flag。

  • main.o
  • one.o 一.o
  • Makefile 生成文件

実行ファイル作るためにmakeした。 我做了一个可执行文件。
TsukuCTF23- Writeup
a, bないので無理いわれる。  a,b,所以这是不可能的。
Ghidraで見る。  在 Ghidra 中观看。
main.o
TsukuCTF23- Writeup
one.o 一.o
TsukuCTF23- Writeup
TsukuCTF23- Writeup
Exportsできてませんね。  我无法导出它。

新たに定義して一緒にコンパイルする。 定义一个新的并一起编译它。

definitions.c 定义.c
int a = 0xb;
int b = 0xc;

フラグ判定でabcの和を聞かれ正誤判定されるが、 您将被问及国旗判决中ABC的总和,它将被判断为正确或错误。
別にaとbが合ってる必要ないので適当にやって動的解析する方向にします。
A和B不一定是正确的,所以我会适当地做,做动态分析。

Makefileも適当に書き直します。  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$ 

TsukuCTF23- Writeup
rbp-0x10のとこ0x7fffffffe180のアドレスに答えが入ってます。
rbp-0x10 答案就在这个地址里 0x7fffffffe180 。

120です。  120 是。

TsukuCTF23{120}

content_sign

以下のファイルが渡されます。Autherと編集日時を答えるみたいデス。
传递以下文件: Auther 和编辑的日期和时间似乎得到了回答。

  • signed_flag.png

とりあえずstrings見ます。 我现在来看看字符串。
TsukuCTF23- Writeup
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 白痴

見つけたので残しておきます(ニッコリ 我找到了,所以我会离开它(微笑)
TsukuCTF23- Writeup

TsukuCTF23- Writeup

ここから解けなかったやつ 我无法从这里解决的问题

Rev – title_screen 修订版 – title_screen

NESのファミコンのアセンブリっぽい。初めて見た。
它看起来像一个 NES NES 程序集。 我是第一次看到它。

とりあえずエミュレートする。  暂时效仿。
TsukuCTF23- Writeup
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 编辑.

main.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 文件,让我们转动它。
エミュレータは以下を利用した。  模拟器使用了以下内容:

TsukuCTF23- Writeup

はい???? 是的????
ここからchrファイル作成地獄に突入する。  从这里开始,您将陷入创建 chr 文件的地狱。
こんな感じで読めそうにないピクセルを削除していく。
删除不太可能像这样可读的像素。

TsukuCTF23- Writeup

以下は私が作成した芸術作品たちである。 以下是我创作的一些艺术作品。
是非ともここで供養させてほしい。  无论如何,我想在这里举行追悼会。

エントリーナンバー1 – いそいそ 条目编号 1 – Isoiso

TsukuCTF23- Writeup

エントリーナンバー2 – よしよさ 条目编号 2 – Yoshiyosa

TsukuCTF23- Writeup

エントリーナンバー3 – 8888 条目编号 3 – 8888

TsukuCTF23- Writeup

エントリーナンバー4 – よしよ 条目编号 4 – 好的

TsukuCTF23- Writeup

エントリーナンバー5 – Lv1 条目编号 5 – Lv1

TsukuCTF23- Writeup

エントリーナンバー6 – X 条目编号 6 – X

TsukuCTF23- Writeup

エントリーナンバー7 – ここここここここここここここここここここここここ
条目编号 7 – 这里,这里

TsukuCTF23- Writeup

NES難しい。 NES困难。
なんもわからん。  我什么都不懂。
正解はasmに書いてあるこのdataのマッピングとbmpを比べるだけらしい。
似乎正确答案 asm data 只是比较一下 bmp 和 的这个映射。

なんもわからん。  我什么都不懂。
TsukuCTF23- Writeup
TsukuCTF23- Writeup
おそらく問題設定として「bmpからchr作る」のではなく、「昔作ったchrの名残で出てきたbmp」が問題のbmpファイルだからこの方法でのエミュレートではそもそも問題の趣旨と違うので間違った答えが出るのだと思う。
据推测,问题设置不是“由”,而是“ chr 它是很久以前的 chr 残余物出来 bmp 的”,所以以这种方式模仿它与 bmp 问题的目的不同 bmp ,所以我认为会给出错误的答案。

その発想はなかった。頭カチコチ。  我没有那个想法。 头滴答作响。

まとめ 总结

TsukuCTF23- Writeup

チームのPro OSINTerたちのお陰で初めて一桁台の順位にいきました!!!
感谢团队的Pro OSINTers,我们第一次达到了个位数!

とても楽しかった!!!  真是太好玩了!
(次回からは自分も貢献できるように頑張ります。)
(从下次开始,我会尽我所能做出贡献。 )

 

原文始发于@schectman-hell:TsukuCTF23- Writeup

版权声明:admin 发表于 2023年12月11日 下午8:40。
转载请注明:TsukuCTF23- Writeup | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...