Skip to content

Commit 8677576

Browse files
committed
typo
1 parent 1bfc448 commit 8677576

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

2025-wwctf/rev/Flagchecker.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ description: AI flag checker (hard)
55
---
66

77
## post mortem
8+
89
Yay! non-zero solves!
910

1011
The one thing I messed up was the final score, because the original challenge was not linear layers, it was a CNN which was much smaller in size, and is also more accurate.
1112

12-
However my intended solution of generating a image just by passing a `1050*51` image over and over to get the flag didn't work. I should've just tried to solve it with other algorithms like the other player did, which actually uses the font data, but it was late in the night and also approaching the tart of the CTF, so I just made a new model that is fully linear, hopefully making the adversarial attack easier.
13+
However my intended solution of generating a image just by passing a `1050*51` image over and over to get the flag didn't work. I should've just tried to solve it with other algorithms like the other player did, which actually uses the font data, but it was late in the night and also approaching the start of the CTF, so I just made a new model that is fully linear, hopefully making the adversarial attack easier.
1314

1415
But I still messed up the font rendering part, this caused the glyphs to not match the training code, this caused the score to be low (~0.1). I couldn't figure out the solution in time, so I just lowered the required score to pass the password check.
1516

@@ -602,10 +603,13 @@ wwf{wait___it_is_a_ai_challenge??_always_has_been}
602603
> I accepted both flags
603604
604605
## other solutions
606+
605607
### Beam Search (@5h1kh4r)
608+
606609
Do a beam search by iteratively scoring rendered candidate flags.
607610

608611
### greedy (@grok)
612+
609613
I tried using grok to solve the challenge after `upx -d --lzma`, it managed to solve everything basically.
610614

611615
> This is the decompiled code of a CTF challenge, it accepts a 50 char flag and checks it. It is a 50MB binary but this is most of the code already, there aren't that much code in the binary. Please read the code carefully, figure out what it is doing, and help me solve for the flag. If there are assets to extract, tell me their names and addresses.
@@ -642,7 +646,7 @@ def forward_pass(flag):
642646
patch = patch.astype(np.float32) * 0.0078431377 - 1.0
643647
col_start = 21 * k + v22
644648
buffer[v24:v24+v19, col_start:col_start+v18] = patch
645-
649+
646650
x = buffer.flatten()
647651
x = np.maximum(w1 @ x + b1, 0) # Layer 1 + ReLU
648652
x = np.maximum(w2 @ x + b2, 0) # Layer 2 + ReLU
@@ -668,4 +672,5 @@ print("Flag:", "".join(flag), "Score:", best_score)
668672
```
669673

670674
### look at the weights (@unknown)
675+
671676
Someone just drew all of layer 1's weights out and apparently one of them contained the flag.

0 commit comments

Comments
 (0)