문제를 처음 본 순간 미루고 미루던 gdb 공부를 해야겠구나 라는 생각이 들었다. 그렇게 문제를 처음 본지 하루 정도가 지나서야 간단한 gdb명령어를 익히고 bof 문제를 제대로 풀기 시작했다. 여기서 사용된 개념인 gdb, 버퍼오버플로우, python을 통한 인자 전달은 다른 포스팅에서 설명하겠습니다. 사전조사 해당 문제는 소스파일과 문제파일 두개를 주었고, 문제의 정답은 nc pwnable.kr 9000을 통해서 입력해 주면 될듯 합니다. bof.c소스파일 해당 문제의 소스 파일을 먼저 간단하게 해석해보면 key값이 0xcafebabe와 같아지면 쉘을 실행시켜주고 그 실행된 쉘을 통해서 flag파일을 찾으면 될 듯 합니다. 하지만 key의 값을 입력하는 곳은 어디에도 없고 func에서 overflow..
collision.hwp 사전 분석 해당 디렉토리에 있는 파일입니다.col을 실행하여 flag값을 얻어야 하는듯합니다. col의 소스코드 소스 분석 main 함수 해당파일은 입력 값을 받아, 그 글자의 크기가 20글자이어야 하며, 입력한 값과 hashcode의 값이 같아야 flag파일을 볼 수 있는 듯합니다. 여기서 hashcode의 값은 0x21DD09EC입니다. ./col test로 입력한 경우에는argv[0] = colargv[1] = test가 들어가게 됩니다. check_password함수 여기서 이상한 점은 입력받을 때는 char 형으로 받지만 check_password 함수에 들어갈 때는 int 형으로 데이터를 더해준다는 것입니다.즉 ./col 12341234123412341234를 입력하게..
사전 분석 ./fd OOO 이런식으로 입력하면 될 듯 하며 buf의 값은 LETMEWIN과 같아야 한다.buf와 관련 있는 문장은 len = read(fd, buf, 32); 만 있으며 read 함수를 알아보면, read 함수란? 원형 : ssize_t read(int fd, void *buf, size_t nbytes)fd파일 디스크립터*buf파일을 읽어 들일 버퍼(변수)nbytes버퍼의 크기size_t(반환 값)정상적으로 실행되었다면 읽어 들인 바이트 수, 실패하면 –1을 반환. fd(File Descriptor) 란? :특정한 파일에 접근하기 위한 추상적인 키. ( 보다 쉽게 파일에 접근하기 위해서 ) 쉽게 설명하면 파일 KonYangUniversityCyberSecurity.txt 라는 파일을 불..