Wargame/pwnable.kr
-
[pwnable.kr][Toddler's Bottle] 2. collisionWargame/pwnable.kr 2019. 7. 16. 02:37
MD5 해시 충돌에 관한 문제이다. ID: col / PW: guest로 접속하여 파일을 확인해보았다. col의 소스코드를 확인해보자. main을 먼저 보면, 인자가 20 bytes이어야 하고, hashcode와 check_password(인자)가 같아야 flag가 출력된다는 것을 알 수 있다. 그렇다면 check_password 함수를 자세히 살펴보자. unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
-
[pwnable.kr][Toddler's Bottle] 1. fdWargame/pwnable.kr 2019. 7. 15. 19:49
pwnable.kr의 첫 번째 문제는 fd(File Descriptor)에 대한 문제이다. 먼저 파일 디스크립터에 대해 잘 모른다면 아래 설명을 참조하자. ...더보기 파일 디스크립터(File Descripter)란? 리눅스에서 파일을 읽고 쓰기 위해서는 반드시 파일을 open해야 한다. 만약 프로세스가 실행중에 이미 존재하는 파일을 open하거나 새로운 파일을 생성해달라고 커널에 요청하면, 커널은 해당 파일에 대해 '파일 디스크립터'라는 0 이상의 정수값을 반환한다. 리턴된 파일 디스크립터 값은 후에 프로세스가 read(), write()와 같은 시스템콜 함수를 이용하여 특정 파일에 접근할 때 인자로 사용된다. 즉, 파일 디스크립터란 프로세스에서 특정 파일에 접근할 때 사용하는 일종의 인덱스 값이다. ..