반응형

문제는 Key를 구하고, Key를 성공 문자열위치를 overwrite하라고 한다.

패킹이 되어 있지는 않다. 디버깅을 해서 Key를 구해보자.

 

들어와서 문자열을 비교하는 함수까지는 들어 왔는데, 이상한 구문에서 자꾸 걸리길래 역방향으로 key를 찾아 보았다.

여기서 삽질 좀 했다. Key를 구하는데 아무 쓸모 없는 코드였다.

 

문제를 풀 때 너무 위에서 찾는 경향이 있음 너무 산으로 감 요점만 정확히.

flag를 뿜는 예제면 flag뿜는 구문부터 위로 올라가자.

 

여러가지 구문들이 있지만, 성공 문자열 위에 있는 CMP구문이 의심스럽다. eax에 뭐가 들어가는지 브레이크 포인트를 걸고 확인해본다.

 

3039가 들어있다.

계산기로 확인해보니 내가 입력한 12345가 맞다. 

 

그럼 비교하는 구문의 뒤 인자인 "0x7A2896BF"를 10진수로 바꿔보니

2049480383이 나왔다. 키로 입력해보면,

Key는 이렇게 찾게 되었고 HxD로 문자열 부분을 Overwrite해주겠다.

 

 

이렇게 되면 파일 오프셋은 0x0D3B ~ 0x0D45이 되게 되는데,  0x0D44가 아닌 이유는마지막에는 꼭 널문자를 포함하여 계산 해야한다. 문자열의 끝은 NULL로 구분하기 때문에.

 

KEY : 2049480383

주소 영역 : 0D3B0D45

 

 

정답은 "20494803830D3B0D45"

반응형

'Reversing 문제 풀이 > CodeEngn.com_Basic (Clear)' 카테고리의 다른 글

codeengn-basic-L14 풀이  (0) 2022.04.08
codeengn-basic-L13 풀이  (0) 2022.04.06
codeengn-basic-L11 풀이  (0) 2022.04.02
codeengn-basic-L10 풀이  (0) 2022.03.31
codeengn-basic-L09 풀이  (0) 2022.03.27