오랜만에 리버싱입니당. 리버싱도 안하니까 슬슬 좀 그래서 오랜만에 하나 잡아봤습니다.
먼저 대충 까봐도 4번에 시크릿 메뉴가 있다는 건 알 수 있고, 이때 1번메뉴는 그냥 출력, 2번 메뉴가 뭔가를 하는 메뉴이기에 분석해 보겠습니당.
쭉 보면 stage 형식으로 5개를 깨면 뭔가 파일을 드랍합니다. 그러니까 일단 stage 부터 깨보져
1 스테이지 입니다. 입력받은걸로 xor 해가지고 v40 이랑 비교합니다. 그냥 xor 역연산 해주면 뚝딱. (작은 코드니까 gist 안올릴게여)
enc = 'MVYLXYUARJ'
key = '47459'
for i in range(10):
print(chr(ord(enc[i]) ^ ord(key[i%5])),end='')
이런걸 돌려주면 stage1 key를 얻게 됩니당. key : yamyambugs
그후 간단한 안티디버깅이 있습니당
2스테이지
윽... 디버깅 귀찮타... 나중에 올리 열어서 값수정으로 풀어줍시다.
3스테이지
레지스트리 확인하는데, 그냥 만들어 주면 뎁니다.
이런식으로 하나 만듭시당
4스테이지.
이것도 그냥 2스테이지처럼 올리로 넘어가영
또 안티디버깅후
이것도 1번처럼 xor 쓱싹
enc = '[S[X]DWYJ^'
key = '3674231096'
for i in range(10):
print(chr(ord(enc[i]) ^ ord(key[i])),end='')
key : hellofish
이제 문제풀러 올리를 키고
안티디버깅은 그냥 eflags 에서 적절한거 조절해서 우회해주고, stage2, 4 는 cmp 할때 edi 나 edx + 194, 195, 196 쪽으로 이동해줘서 맞게 바꿔주고 하시면
c 라는 파일이 드랍되는데 까보면 PNG 헤더를 갖고 있습니다. 그래서 png 로 바꾸면....?
후후 죠습니다
'Reversing' 카테고리의 다른 글
간단한 Arm 리버싱 (0) | 2018.01.06 |
---|---|
[???] cuty (2) | 2017.12.05 |
[Reversing.kr] Replace (4) | 2017.11.13 |
[DIMICTF2017] ToHard (0) | 2017.07.17 |