Shattered Tablet

Personal Rating: Medium

This was a reversing and deobfuscation challenge. I could find this code with ghidra:

   (((((((((local_30._7_1_ == 'p') && (local_48._1_1_ == 'T')) && (local_48._7_1_ == 'k')) &&
          ((local_28._4_1_ == 'd' && (local_40._3_1_ == '4')))) &&
         ((local_38._4_1_ == 'e' && ((local_40._2_1_ == '_' && ((char)local_48 == 'H')))))) &&
        (local_28._2_1_ == 'r')) &&
       ((((local_28._3_1_ == '3' && (local_30._1_1_ == '_')) && (local_48._2_1_ == 'B')) &&
        (((local_30._5_1_ == 'r' && (local_48._3_1_ == '{')) &&
         ((local_30._2_1_ == 'b' && ((local_48._5_1_ == 'r' && (local_40._5_1_ == '4')))))))))) &&
      (((local_30._6_1_ == '3' &&
        (((local_38._3_1_ == 'v' && (local_40._4_1_ == 'p')) && (local_28._1_1_ == '1')))) &&
       (((local_30._3_1_ == '3' && (local_38._1_1_ == 'n')) &&
        (((local_48._4_1_ == 'b' && (((char)local_28 == '4' && (local_40._1_1_ == 'n')))) &&
         ((char)local_38 == ',')))))))) &&
     ((((((((char)local_40 == '3' && (local_48._6_1_ == '0')) && (local_38._7_1_ == 't')) &&
         ((local_40._7_1_ == 't' && ((char)local_30 == '0')))) &&
        ((local_40._6_1_ == 'r' && ((local_28._5_1_ == '}' && (local_38._5_1_ == 'r')))))) &&
       (local_38._6_1_ == '_')) && ((local_38._2_1_ == '3' && (local_30._4_1_ == '_'))))))

Those are my notes for the deobfuscation process:

4871==k
4861==0
4851==r
4841==b
4831=={
4821==B
4811==T
48==H

4071==t
4061==r
4051==4
4041==p
4031==4
4021==_
4011==n
40==3

3871==t
3861==_
3851==r
3841==e
3831==v
3821==3
3811==n
38==,

3071==p
3061==3
3051==r
3041==_
3031==3
3021==b
3011==_
30==0

2851==}
2841==d
2831==3
2821==r
2811==1
28==4

I then wrote this sorting script to get the flag:

from array import *
from itertools import groupby

f = open("notes", "r")
input = f.read()

array = input.split("&&")
unsorted = []
array1 = [[]]
letters = []
numbers = []

for i in array:
    i = i.replace('(', '')
    i = i.replace(')', '')
    i = i.replace(' ', '')
    i = i.replace('_', '')
    i = i.replace('char', '')
    i = i.replace('.', '')
    i = i.replace('\n', '')
    i = i.replace('local', '')
    i = i.replace("'", '')
    unsorted.append(i)

unsorted.sort()

#print(list(g) for k, g in groupby(unsorted, key=lambda x: x[0]))

for i in unsorted:
    print(i)

HTB{br0k3n_4p4rt,n3ver_t0_b3_r3p41r3d}

Last updated