level 2. ez_rev
https://dreamhack.io/wargame/challenges/1168
IDA로 main을 보니, 문자열을 받아와 연산을 하고 그 값이 특정 값이면 Correct로 간다. 처음에 입력되는 값이 flag인 것 같고, 역연산을 하면 될 것 같다.
함수 이름으로 어떤 연산을 하는지 대충 예측이 가능해 보였다. 함수를 하나하나 보면 연산이 너무 복잡하게 되어있어서, bp를 걸고 동적디버깅을 해보았다
IDA에서 본 qksrkqs 와 XOR 연산하는 것으로 보인다
이걸 토대로.. 여러 시도를 통해 코드로 만들어내서, 역연산한다!!!
xor_key = "qksrkqs"
string = "|l|GHyRrsfwxmsIrietznhIhj"
def shift_right(a):
return a[-3:]+a[0:-3]
def shift_left(b):
return b[3:]+b[0:3]
def xor(x,y):
res = ""
for i in range(len(x)):
res += chr(ord(x[i])^ord(y[i%len(y)]))
return res
plain = shift_left(string)
plain = xor(plain, xor_key)
plain = shift_right(plain)
plain = xor(plain, xor_key)
plain = shift_left(plain)
print(plain)
반응형
'STUDY > Dreamhack' 카테고리의 다른 글
[WEB] DOM XSS (0) | 2024.07.09 |
---|---|
[WEB] Switching Command (0) | 2024.06.23 |
[rev] Summer Fan (level2) (0) | 2024.06.15 |
[web] Dream Gallery (level2) (1) | 2024.06.14 |
[pwn] mmapped (0) | 2024.04.22 |