CIDY
[Reverse_Engineering] 문제풀이(rev-basic-3) 본문
얘도 검증조건 찾는 문제인 것 같다.
함수보러가자...
간단한 문제다. 브루트포스로 해결해보자.
checktable = [0x49, 0x60, 0x67, 0x74, 0x63, 0x67, 0x42, 0x66, 0x80, 0x78, 0x69, 0x69, 0x7B, 0x99, 0x6D, 0x88, 0x68, 0x94, 0x9F, 0x8D, 0x4D, 0x0A5, 0x9D, 0x45]
arr = "A" * len(checktable)
arr = list(map(ord, arr))
check = 1
for i in range (24):
if checktable[i] != ((i ^ arr[i]) + 2*i):
check = 0
if check == 1:
print("Correct")
else:
print("Wrong")
python으로 표현하면 이렇고,
checktable = [0x49, 0x60, 0x67, 0x74, 0x63, 0x67, 0x42, 0x66, 0x80, 0x78, 0x69, 0x69, 0x7B, 0x99, 0x6D, 0x88, 0x68, 0x94, 0x9F, 0x8D, 0x4D, 0x0A5, 0x9D, 0x45]
flag = ""
for i in range(len(checktable)):
for j in range (0x100):
if checktable[i] == ((i ^ j)+2*i)&0xff :
flag += chr(j)
print(flag)
이렇게 플래그를 얻을 수 있다.
'Hack > DreamHack' 카테고리의 다른 글
[Web_Hacking] 문제풀이(session) (0) | 2022.07.31 |
---|---|
[System_Hacking] 문제풀이(environ) (0) | 2022.07.17 |
[Reverse_Engineering] 문제풀이(patch) (0) | 2022.07.17 |
[Reverse_Engineering] 문제풀이(rev-basic-1) (0) | 2022.07.16 |
[Reverse_Engineering] 문제풀이(rev-basic-0) (0) | 2022.07.16 |