목록Pwnable.kr/Toddler's Bottle (18)
Pwnstar

pwnable.kr의 2번 collision이라는 문제이다. 이 문제도 fd와 마찬가지로 접속해서 보면 바이너리 하나, 소스파일 하나, flag파일이 하나 들어있다. 우선 소스파일을 살펴보면, 그리 길지는 않은데 조건문이 몇 개 보인다. 우선 실행할 때 인자를 하나 줘야할 것 같고, 인자의 길이는 20을 맞춰주면서 위에 정의된 hashcode와 인자로 준 값이 같아야 하는 것 같다. 그런데 위에 check_password 함수를 보면, 인자로 준 문자열 배열을 정수형 배열로 바꿔서 그 값들을 다 더해서 return해주는 것 같다. 그래서 0x21DD09EC를 5로 나누면 되지 않을까 해서 이 값을 5로 나눠보았다. 이렇게 값이 나오는데...5로 딱 떨어지지 않으니 마지막 값을 수정해서 줘 보자. 짠

pwnable.kr toddler's bottle을 올클했으니 이제 라업을 작성해보려고 한다. 참 오래 걸려서 기억이 가물가물한 문제들도 많지만 다시 풀어보기도 하면서 라업을 작성해보려고 한다. 우선 첫번째 문제 fd이다. fd 서버에 들어가면 바이너리 하나, c언어 소스파일 하나, flag파일 하나가 있다. 소스를 보면 argv[1]의 인자를 주지 않으면 프로그램이 종료되고, fd는 인자로 준 argv[1]를 int형으로 바꿔서 -0x1234한 값이 들어간다. 그 fd가 read함수의 파일 디스크립터로 들어가고, buf에 LETMEWIN이라는 문자열이 들어가 있으면 플래그를 볼 수 있을 것 같다. standard input은 0이므로 인자로 0x1234를 주고, LETMEWIN을 입력으로 주면 플래그를..