profile image

L o a d i n g . . .

2번 문제화면이다.

 

접속을 해서 file들을 확인하니 col, col.c, flag 파일이 있다.

 

 

col.c 소스 코드이다.

 

hackctf에서 본 적이 있는 유형이다.

argv[1]으로 인자를 받아 check_password()의 인자로 넘겨주는데, check_password()의 반환값과 hashcode 값이 동일할 경우 flag 파일을 볼 수 있다.

 

check_password()의 경우 받은 인자를 int형 포인터로 형변환해 for 문을 돌려준다.

for 문을 돌리면서 4바이트씩 참조를 해 res에 값을 누적시키고 마지막에 res를 반환한다.

 

그리고 반환된 res와 hashcode 값(0x21DD09EC)과 동일하면 된다.

그렇기에 hashcode 값을 5로 나눠주고 그 값을 5개 붙이면 될 듯하다.

그런데 hashcode 값이 딱 나누어 떨어지지 않고 나머지가 4라서, 마지막 값에 4를 더해주면 될 것이다.

 

 

따라서 다음과 같은 형태가 될 것이다.

(0x6C5CEC8)*4 + 0x6C5CECC

 

위의 논리대로 payload를 작성해 성공적으로 flag를 획득하였다!

 

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

[Pwnable.kr] 6번 random  (0) 2021.04.08
[Pwnable.kr] 5번 passcode  (0) 2021.04.08
[Pwnable.kr] 4번 flag  (0) 2021.04.08
[Pwnable.kr] 3번 bof  (0) 2021.04.01
[Pwnable.kr] 1번 fd  (0) 2021.04.01
복사했습니다!