본문 바로가기

Pwnable.kr8

[Toddler's Bottle] pwnable.kr collision main 함수부터 차근차근 보면, 총 20길이의 입력값을 받으며, 4개씩 쪼개어 5번을 더하게 된다. 1111 2222 3333 4444 5555 각 칸을 더하게 된다. 궁금하면 GDB로 확인해보시길 바란다. 즉, 첫 번째 4개 + 그 다음 4개 + 4개 + 4개 .... = 0x21DD09EC가 성립되어야 한다. 0x21DD09EC를 5로 나누면 0x06C5CEC8 값이 나오며, 마지막 한 개의 값에는 4를 더하여 주어야 한다. 딱 나누어 떨어지지 않으니! (0x06C5CEC8 + 0x06C5CEC8 + 0x06C5CEC8 + 0x06C5CEC8 + 0x06C5CECC) 즉, 페이로드는 ./col `python -c 'print "\xc8\xce\xc5\x06"*4 + "\xcc\xce\xc5\x06".. 2017. 8. 16.
[Toddler's Bottle] pwnable.kr fd 풀이 리눅스 상에서 file descriptor를 공부해야 되는 내용이네요. 소스코드를 보면 String 비교가 있습니다. LETMEWIN이랑 read로 읽은 스트링이 일치해야 되는 문제입니다.문제에 제시한 것처럼 file descriptor를 공부하셨다면 감이 오셨을 겁니다.표준 입력, 출력, 에러 3가지를 보셨을 겁니다.len = read(fd, buf, 32)의 fd값은 아래처럼len = read(0, buf, 32)이 되도록 해야 합니다.더 위로 올라가면 int fd의 값은 0이 되어야 합니다.즉, 16진수 0x1234 는 10진수로 4660이죠. 요약하자면1. fd 변수의 값이 0이 되어야 표준 입력을 할 수 있다.2. 16진수 1234는 10진수로 4660이므로, 4660을 입력하여 빼주어야 한다... 2017. 8. 16.