pwnable.kr lotto 문제 ! 여느 문제들과 동일하게 디렉토리에는 실행파일, 소스코드, flag 파일이 들어있다. 먼저 소스코드의 내용을 이해해보았다. 위의 소스코드에서 마지막 for문을 보면 랜덤으로 6개의 숫자가 lotto 배열에 저장되는 것을 볼 수 있는데 숫자는 아스키 코드 값 1~45 까지 랜덤한 숫자로 정해지는 것을 알 수 있다. 이어서 play 함수의 calculate lotto score 부분을 보면 이중 for문을 사용하여 사용자에게 입력받은 문자열과 무작위로 배정한 lotto[]의 값이 일치하는 부분을 확인할 수 있다. match 값이 6이 되면 lotto 값과 submit의 값이 일치하는 것으로 판단하는데 이중 for문은 6번씩 2중을 확인해 총 36..
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() 함수로 입력 값..