level 18

2020. 9. 1. 23:51

뭐야..

길고 복잡하네..

 

이런저런 생각이 오가고, FD에 대해서 알아보다가 시스템에 대한 지식이 별로 없어 매우 어렵다 느껴서 한 발 빠져서 보니,

일단 디버깅을 해봐야겠다고 생각했습니다.

그리고 한 가지 알 수 있는 점은 뭔가 string 변수를 통해서 check를 0xdeadbeef 값으로 변경해야한다는 것입니다.

 

음.. 음.. 좋네요.

눈 빠지기 좋아요 ㅋㅋ

 

자, 이걸 다 보기 싫다면 생각을 해봅시다.

check 변수의 위치는 0xdeadbeef 값과 함께 나올겁니다.

그리고, string 변수의 위치는 위쪽에는 없었으니 맨 아래쪽에 'lea'라는 어셈블리어와 함께 등장하겠죠?

 

그러면 check는 $ebp-0x68, string은 $ebp-0x64이네요.

어라? string보다 check가 뒤에 있네요.

지금까지는 앞에 있는 변수들의 데이터를 덮었지만, 이번에는 뒤에 있는 변수를 덮어야하네요.

 

그런데, 소스코드를 자세히 보니 string에 포함된 문자열중 0x08이 있으면 count를 감소시키고 다른 개행도 아니고 0x08도 아니면 count를 index 값으로 그 위치에 해당 문자를 기록하네요.

 

그렇다면 뒤로 네번 이동한 뒤 0xdeadbeef를 차례대로 넣으면 되겠죠?

"\x08"*4 + "\xef\xbe\xad\xde"

 

성공 ^*^

'[▒] 보안 > FTZ' 카테고리의 다른 글

level 20  (0) 2020.09.02
level 19  (0) 2020.09.02
level 17  (0) 2020.09.01
level 16  (0) 2020.09.01
level 15  (0) 2020.09.01

BELATED ARTICLES

more