목록Pwnable.kr (43)
Pwnstar
3번째 문제 bof이다. 이 문제는 다른 문제와 다르게 소스파일과 바이너리를 주고, nc로 연결해서 프로그램을 실행하게끔 되어있다. 우선 소스는 이렇게 되어있다. func함수에 0xdeadbeef를 인자로 주고, 32바이트 크기를 가진 overflowme를 overflow해서 key의 값을 0xcafebabe로 만들어주면 쉘이 따질 것 같다. 음 까나리가 걸려있는데 3번부터 까나리를 릭하는 문제가 나오려나..걱정하면서 func함수의 gets에 브레이크포인트를 걸고 실행해보았다. A 32개를 입력으로 줘 보았는데 저 밑에 0xdeadbeef가 보인다. dummy를 52개 주고, cafebabe를 입력으로 주면 될 것 같은데... 중간에 까나리가 있어서 찝찝하다. 일단 익스 코드를 짜 보았다. from pw..
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을 입력으로 주면 플래그를..