You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/posts/uiuctf25-damagedsoc/index.md
+30-30Lines changed: 30 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: UIUCTF 2025 - Damaged SoC
2
+
title: UIUCTF 25 - Damaged SoC
3
3
date: 2025-08-10
4
4
lastmod: 2025-08-10T23:50:30+02:00
5
5
categories:
@@ -68,7 +68,7 @@ but we don't need to go through all of them to understand what it does, in short
68
68
But let's cut to the chase, what is all of this actually doing?
69
69
70
70
```bash
71
-
$ ./SOC_run_sim
71
+
$ ./SOC_run_sim
72
72
Bootloading
73
73
Starting verification:
74
74
Incorrect key
@@ -92,7 +92,7 @@ The first few lines contain several `EF BF BD` (the UTF-8 replacement character,
92
92
93
93
Our goal is to recover the boot ROM from the corrupted image, decompile, understand the “key” check (as we will see, the flag itself), craft the correct string and **patch** the memory so the verification passes and the board “boots.”
94
94
95
-
## Decompiling
95
+
## Decompiling
96
96
97
97
Like many modern reverse engineering challenges, this step won't be as easy as throwing the binary into IDA or Ghidra, it's a little trickier than that. Running `SOC_run_sim` through IDA awakens cosmic horrors that are best left undisturbed:
98
98
@@ -173,12 +173,12 @@ Incorrect key
173
173
**`vq{uv|qw`**
174
174
```
175
175
flag[15] = key[0]-16 = 'v'(118)-16 = 102 = 'f'
176
-
flag[16] = key[1]-16 = 'q'(113)-16 = 97 = 'a'
177
-
flag[17] = key[2]-16 = '{'(123)-16 = 107 = 'k'
178
-
flag[18] = key[3]-16 = 'u'(117)-16 = 101 = 'e'
179
-
flag[19] = key[4]-16 = 'v'(118)-16 = 102 = 'f'
180
-
flag[20] = key[5]-16 = '|'(124)-16 = 108 = 'l'
181
-
flag[21] = key[6]-16 = 'q'(113)-16 = 97 = 'a'
176
+
flag[16] = key[1]-16 = 'q'(113)-16 = 97 = 'a'
177
+
flag[17] = key[2]-16 = '{'(123)-16 = 107 = 'k'
178
+
flag[18] = key[3]-16 = 'u'(117)-16 = 101 = 'e'
179
+
flag[19] = key[4]-16 = 'v'(118)-16 = 102 = 'f'
180
+
flag[20] = key[5]-16 = '|'(124)-16 = 108 = 'l'
181
+
flag[21] = key[6]-16 = 'q'(113)-16 = 97 = 'a'
182
182
flag[22] = key[7]-16 = 'w'(119)-16 = 103 = 'g'`
183
183
```
184
184
@@ -203,7 +203,7 @@ ROM:0000000000000210 beqz $v0, loc_224 ; if (v0 == 0) jump to verification
0 commit comments