SECURITY/System | Wargame

SECURITY/System | Wargame

[Pwnable.kr] Random

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..

SECURITY/System | Wargame

[Pwnable.kr] Passcode

먼저 ls 명령어로 어떤 파일이 들어있는지 확인하였다. flag, passcode, passcode.c 파일이 들어있다. ​ 가장 먼저 passcode 파일을 실행하 보았다. 이름을 입력하면 환영한다는 인사말이 나오고 비밀번호를 입력했더니 segmentation fault가 난다. ​ ​ passcode.c 파일의 내용을 확인했다. 먼저 passcode1, passcode2 변수를 선언하고 사용자에게 값을 입력받아 각각 두 변수에 대입한다. if 문을 통하여 passcode1은 338150, passcode2는 13371337값과 비교한 후 두 값이 모두 일치할 경우 로그인이 되고, flag를 출력한다. 그렇지 않을 시 로그인이 실패했다는 내용을 출력하고 종료한다. ​ * fflush 함수 - 스트림에 ..

SECURITY/System | Wargame

[Pwnable.kr] Bof

​ 이번 문제는 FTZ 문제풀이를 하면서 가장 많이 다뤘던 BOF 문제이다. 먼저 다운로드 받으라고 나와있는 파일을 다운로드 받았다. wget 명령어는 웹브라우저에서 파일을 다운받기 위한 명령어이다. ​ ​ ​ ​ 파일이 다운로드 된 것을 보고, 권한을 확인했다. 두 파일 모두 읽기만 가능하고 실행은 할 수 없다. 이렇게 되면 페이로드를 작성해서 실행하는 방법이 없지만 문제에 보면 nc pwnable.kr 9000으로 bof에 nc를 걸어놓았을 것을 짐작할 수 있다. ​ ​ ​ ​ 먼저 bof.c 파일을 읽어보면 func와 main 함수가 정의되어 있다. main 함수에서 func에 key 인자로 0dbeadbeef를 넘겨준다. func 함수에서는 overflowme를 32byte 만큼 정의하였고 get..

SECURITY/System | Wargame

[Pwnable.kr] Collision

​ 다음 문제는 collision ! ​ ​ ​ ls 명령어로 디렉토리 내에 있는 파일을 먼저 살펴보았다. 내 권한은 col 이므로 col 파일은 실행 / col.c 파일은 읽기 / flag는 아무것도 할 수 없다. 먼저 읽을 수 있는 파일을 파악해야 실행 파일을 활용할 수 있을 것 같아 col.c 파일을 읽어보았다. ​ ​ ​ unsigned long 형의 hashcode을 정의하고 16진수 21DD09EC를 대입했다. unsigned long 형의 check_password 함수를 정의했다. 함수는 인자를 int 형으로 변환하여 4byte 씩 5번 읽고, res에 추가한다. res를 return 하고 함수가 종료된다. ​ main 함수로 넘어와보자. argc가 2 미만일 경우 즉 인자가 없을 경우에 ..

yuujoeng
'SECURITY/System | Wargame' 카테고리의 글 목록 (2 Page)