Wargame/pwnable.kr
-
[pwnable.kr] Level 9 - mistakeWargame/pwnable.kr 2023. 5. 7. 18:20
Level 9 - mistake를 풀어보자. 문제를 보면 우리 모두는 실수를 하는데, 계속 나아가라고 적혀있다. (좋은 말인 것 같다.) 이번 문제에서는 특별히 해킹 기술이 필요하지는 않고, 기본 상식으로 풀어라고 되어있다. 문제에서 알려준 곳으로 ssh 접속을 해보도록 하자. flag, mistake, password 파일이 있다. 당연하게도 flag 파일을 바로 읽는 것은 막혀있다. mistake 파일을 실행해보니, 브루트포싱은 하지 마라고 한다. 그것을 방지하기 위해 프로그램을 실행할 때마다 약간의 지연이 있다. 그리고 test를 입력해보니 Wrong Password라는 문구가 출력되며 프로그램이 종료된다. mistake.c 파일로 프로그램의 코드를 살펴보자. 가장 위에는 xor 함수가 정의되어 있..
-
[pwnable.kr] Level 8 - legWargame/pwnable.kr 2023. 4. 23. 06:33
Level 8 - leg를 풀어보자. 문제를 보면 아빠는 arm을 공부하라고 하는데, 본인은 leg를 더 선호한다고 한다. (study가 공부가 아닐 수도 있지만 그냥 넘어가도록 하자.) 우선 문제에서 알려준 파일들을 다운로드하기 위해 Kali에서 wget을 사용한다. 파일을 알아보기 전에, ssh로 접속을 하여 동작을 보도록 하자. leg 파일을 실행하니, 문구가 출력되고 입력을 받고 있다. 'test'를 입력하자 하나의 문장이 출력되고 나서 프로그램이 종료된다. 동작을 봤으니, ssh 접속을 종료하고 다운로드 받았던 파일들을 보도록 하자. 먼저 leg.c 파일을 보니, key1, 2, 3의 함수가 있고 main 함수를 실행하고 있다. 이 key 함수들은 모두 어셈블리어로 되어 있는데, 문제에서 언급한..
-
[pwnable.kr] Level 7 - inputWargame/pwnable.kr 2023. 4. 9. 13:29
Level 7 - input을 풀어보자. 문제를 보면 자신의 입력을 컴퓨터 프로그램에 전달하는 방법을 묻고 있는 것 같다. Kali에서 ssh로 해당 문제에 접속을 해보도록 하자. 존재하는 파일들을 보면, flag와 input 파일 그리고 input의 소스 코드가 있다. 우선 input 파일을 실행해보자. 파일을 실행하면 문구가 3줄 나오는데, 맞는 입력을 하면 flag를 얻을 수 있다고 한다. 어떤 입력이 맞는건지 알아봐야 하므로, 소스 코드를 보도록 하자. 이전 문제들보다 긴 코드가 나오는데, 총 5개의 Stage로 나누어져 있다. 하나씩 살펴보면서 문제를 풀어보도록 하자. Stage 1은 argv에 관한 것이다. 이 단계를 클리어하기 위해서는 먼저 argc, 즉 입력 인자의 갯수가 100개여야 한다..
-
[pwnable.kr] Level 6 - randomWargame/pwnable.kr 2023. 4. 9. 11:37
Level 6 - random을 풀어보자. 문제를 보면 프로그래밍에서 어떻게 무작위 값을 사용할 수 있는지 물어보는 것 같다. Kali에서 ssh로 해당 문제에 접속을 해보도록 하자. 존재하는 파일들을 보면, flag와 random 파일 그리고 random의 소스 코드가 있다. 우선 random 파일을 실행해보자. 파일을 실행했을 때, 아무런 변화가 없어 임의의 값 'test'를 입력해보았다. 그랬더니 틀렸다고 나타나며, 2^32 번의 시도를 해야될 수 있다고 알려준다. 그 정도의 시도를 할 수는 없으므로 파일을 분석해보도록 하자. 먼저 random.c 파일을 확인해보자. 소스 코드를 보면 rand() 함수에 의해 random 값이 주어지고, key 값을 입력한다. 입력하는 값인 key와 random 값..
-
[pwnable.kr] Level 5 - passcodeWargame/pwnable.kr 2023. 4. 1. 01:49
Level 5 - passcode를 풀어보자. 문제를 보면 아들이 C 코드로 작성한 문제가 있는 파일을 컴파일한 것 같다. 엄마는 말렸지만, 말을 안 듣는 것 같다.. Kali에서 ssh로 해당 문제에 접속을 해보도록 하자. 존재하는 파일들을 보면, flag와 passcode 파일 그리고 passcode의 소스 코드가 있다. 작성된 소스 코드를 먼저 보도록 하자. login, welcome, main의 세 함수로 이루어진 파일이다. login에서는 두 개의 passcode를 입력받고, 그 값을 비교해 문제 해결 여부를 보여준다. welcome에서는 name을 입력받고, 입력받은 name의 Welcome 문구를 보여준다. 마지막으로 main은 welcome 함수와 login 함수를 실행하는 것 외에 특별한..
-
[pwnable.kr] Level 4 - flagWargame/pwnable.kr 2023. 2. 5. 08:09
Level 4 - flag를 풀어보자. 문제를 보면 리버싱이 필요하다는 것을 알 수 있다. 우선은 파일부터 다운로드받고 시작해보자. Kali에 접속해 wget으로 flag 파일을 다운로드 받았다. 리버싱을 해보기 위해 실행 파일이 되어야 할 것 같은데 유저의 허가권에 실행 권한이 없다. chmod로 실행 권한을 추가해주고, flag 파일을 실행하니 문구가 한 줄 나타난다. flag를 어떤 곳에 malloc 하고, strcpy 할 것이니 가져가라는 뜻인 것 같다. gdb로 분석을 하면 간단하게 알 수 있을 것 같다. 그런데, gdb로 main 함수를 분석하려고 하면 symbol이 없다고 하며 분석이 되지 않는다. 사진에는 없지만, 구글링을 통해 다른 몇 가지 방법들도 사용해 봤지만 flag 파일은 분석이 ..
-
[pwnable.kr] Level 3 - bofWargame/pwnable.kr 2023. 1. 7. 08:00
Level 3 - bof를 풀어보자. 문제를 살펴보면 이름처럼 buffer overflow에 대한 문제이다. 우선 위의 두 가지를 다운로드 받고, 천천히 살펴보도록 하자. Kali에 접속해 wget 명령어를 사용해 두 파일을 다운로드했다. 먼저 프로그램의 소스 코드를 살펴보도록 하자. 선언한 func 함수의 key 값을 이용해 문제를 푸는데, 입력으로 gets 함수를 사용하고 있다. 그래서 overflow 문제인 것 같다. 문제를 푸는 방향은 앞에서 많이 해봤던 것들과 비슷하다. func 함수의 인자로 들어가는 0xdeadbeef를 0xcafebabe로 바꿔주면 된다. 이제 필요한 정보는 key의 위치이다. 위치를 알기 위해 gdb를 이용해 분석을 시작해보자. func 함수 부분 중 을 보면, 두 번째 ..
-
[pwnable.kr] Level 2 - colWargame/pwnable.kr 2023. 1. 6. 04:24
Level 2 - col을 풀어보자. 문제를 보면 MD5 해시 충돌에 대해 말하고 있다. 암호학은 아닐 것 같긴 한데, 접속을 해보도록 하자. putty를 이용해 col에 접속을 하고 파일을 확인하였다. col 실행 파일과 col.c 소스 코드 파일이 있는 것을 볼 수 있다. 그런데 putty를 이용하니, 조금만 입력을 하지 않고 시간이 지나면 접속이 끊긴다. 어쩔 수 없이 kali를 켜서 ssh 접속을 하였다. 소스 코드를 확인해보면 hashcode가 있고, check_password 함수가 선언되어 있다. 입력 문자 p에 대해 int 형으로 형 변환을 한 후 res에 5번을 반복하여 그 값을 더해주고 있다. 그리고 인자로 입력하는 argv[1]의 값이 hashcode와 같으면 문제가 해결되는 구조이다..