Profile

머리정리하는곳

c2w2m2

[CodeGate] RamG

오랜만에 리버싱입니당. 리버싱도 안하니까 슬슬 좀 그래서 오랜만에 하나 잡아봤습니다.


먼저 대충 까봐도 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