Pwnable.kr shllshick 문제풀이 ! 현재 디렉토리 안에는 flag, shellshock 실행파일, shellshock.c 소스코드 그리고 bash가 있다. shellshock 취약점을 활용하는 것 같아 해당 취약점에 대해 찾아보았다. * ShellShock(CVE-2014-6271) - GNU bash shell에서 환경변수를 통해 공격자가 원하는 명령어를 실행하게 하는 취약점 - 명령어 만으로 시스템을 장악할 수 있어 CVSS 등급 10점을 받음 - 특정 bash 버전의 환경변수와 환경변수 함수 선언에서 나타날 수 있는 버그를 통해 명령어 실행 - 함수 선언 이후에 공격자가 임의적으로 삽입한 시스템 명령어까지 실행 - 형식 : VER= (){ return; }; /bin/id ..
Pwnable.kr 사이트에 hint가 주어져있다. operaort priority 즉 연산자 우선순위를 생각해야하는 문제인 것 같다. 연산자 우선순위를 배운게 무려 이년전이라 흠칫 ls 명령어로 디렉토리에 있는 파일을 확인해보니 flag, mistake 실행파일 mistake.c 소스코드, password password 파일이 어떤 역할을 하는지 궁금했으나 cat으로 읽을 수 있는 파일은 아니었고, 우선 읽을 수 있는 mistake.c 파일을 읽어보았다. 먼저 void 형의 xor 함수와 main 함수가 선언되어있다. main 함수의 내용을 보면 password 파일의 내용을 pw_len만큼 읽어와 pw_buf 리스트에 저장한다. 이후 scanf() 함수로 입력 값..
ls 명령어로 어떤 파일이 있는지 확인하였다. flag 파일과 실행파일인 random, 소스코드인 random.c 파일이 있다. random.c 소스코드를 먼저 읽어보았다. 함수는 main 뿐이며 먼저 random 변수를 선언했다. random 함수를 사용하여 난수를 생성하고, 이를 random 변수에 대입한다. srand(time(NULL))이 아닌 random을 사용하고 있으므로 불규칙적인 seed 없이 난수가 생성되고 있다. key 변수를 선언하고 scanf 함수를 사용하여 사용자로부터 입력을 받는다. if 문을 통해 key 값과 random 값을 XOR 한 값이 0xdeadbeef와 일치하는지 확인하고 일치할 시에 "Good!"과 함께 flag 값을 출력한다. * random..