짱짱해커가 되고 싶은 나

[Collision] Writeup 본문

pwnable/pwnable.kr

[Collision] Writeup

동로시 2020. 5. 20. 12:42

col.c

col.c 코드를 분석해보면 main의 첫번째 조건문에서 argc는 2이상이어야 한다. 

즉, 하나이상의 argv를 입력하면 된다. 기본적으로 argc=1로 path가 들어가기 때문이다.

 

2번째 조건문에서는 argv[1]의 길이가 20이어야 함을 알 수 있다.

 

3번째 조건문에서는 argv[1]을 check_password함수에 넣었을 때의 결과가 hashcode와 같으면 flag를 cat할 수 있다.

 

check_password함수를 보면 argv의 배열을 5부분으로 더해서 return하는 것을 확인 할 수 있다.

hashcode 를 5로 나누면 113626824*4 + 113626828이 된다.

그런데 총 길이가 20이어야 하므로 hex로 변환하면 0x06c5cecc *1 + 0x06c5cec8 *4 가 된다.

 

리눅스에서 hex값은 little endian으로 뒤에서부터 2씩 끊어서 들어가기 때문에

\xc8\xc3\xc5\x06*4 \xcc\xce\c5\x06 의 형식으로 argv에 넣어주면 된다.

 

'pwnable > pwnable.kr' 카테고리의 다른 글

[random] Writeup  (0) 2020.05.21
[passcode] Writeup  (0) 2020.05.21
[flag] Writeup  (0) 2020.05.21
[bof] Writeup  (0) 2020.05.20
[fd] writeup  (0) 2020.01.01
Comments