본문 바로가기

IT(개발, 보안)/pwnable

(14)
[Pwnable 풀이] 6. flag 혹시나 모르시는 분들을 위해 말하자면 문제의 번호는 제가 푼 순서이므로 무작위로 그 때 그 때 정해집니다...ㅎ 이번 문제는 reversing 문제라고 친절하게 설명도 나와있다. 리눅스 시스템에서 사용해야하는 프로그램들이 필요하므로 virtualbox에 리눅스를 설치하고 풀이를 진행했다. wget 명령어를 사용해 해당 파일을 다운받고 file 명령어로 파일의 정보를 확인했다. ELF 파일은 리눅스 시스템의 실행파일 포맷이다. 그래서 실행가능하게 파일을 변경하고 실행해보니 위와 같은 출력이 나타났다. malloc에다 flag값을 넣어놨다고 하니 gdb를 통해 메모리 주소를 확인해보려 했으나 디버깅이 정상적으로 실행되지 않았다. 그래서 머리를 굴려보다 바이너리 파일의 헤더를 살펴보기로 했다. HxD라는 바이..
[Pwnable 풀이] 5. cmd1 지난 몇일간 여행을 다녀와서 오랜만에 올리는 포스팅이다. 비교적 간단한 문제로 PATH 환경변수를 사용해 해결 가능한 문제이다 먼저 해당 서버에 접속해서 ls를 사용해 파일 목록을 확인하면 cmd1.c 파일과 cmd1 실행파일, flag를 확인할 수 있다. flag 파일은 cmd1_pwn이 읽을수 있기 때문에 cmd1 실행파일으로 확인할 수 있을 것으로 보인다. 아래는 cmd1의 소스 코드로 예상되는 cmd1.c 파일이다. fliter 함수는 인자로 받은 cmd 문자fl열에 'flag', 'sh', 'tmp' 문자열을 포함하면 r에 0이 아닌 값을 리턴하고 main 함수에서는 filter 함수로부터 0이 아닌 값을 리턴받으면 return으로 프로그램을 종료한다. 그렇지 않은 경우엔 system 함수를 사..
[Pwnable 풀이] 4. shellshock shellshock이라는 주제는 이전 고급해킹실습 수업에서 해본적이 있어서 반가운 마음에 문제를 선택해 풀어보았다. 먼저 서버에 접속해 파일들을 확인해보면 아래와 같다. bash 쉘 파일과 flag값, shellshock 실행파일과 코드 총 4가지 파일이 존재한다. 당연하게 flag값은 읽기 권한이 없고, shellshock 공격을 사용해 권한 상승으로 flag 값을 얻어내야 할 것을 보인다. shellshock.c 파일을 살펴보면 setresu(g)id 명령어가 보이는데 파라미터의 값으로 real id, effective id, saved set id를 설정해주는 함수로 3개 인수의 값 모두 getegid()가 들어가 있는 것으로 보아 프로그램의 소유주 shellshock_pwn의 권한으로 프로세스의 ..
[Pwnable 풀이] 3. coin1 세번째 문제로는 coin1을 시도해보았다. 문제의 nc 명령어 사용을 위해 윈도우에 netcat을 까는 것 부터 시작했다, 그런데 결론적으로 말하면 netcat을 설치할 필요는 없었다. netcat 설치 방법은 나동빈 선생님의 블로그 링크를 첨부하겠다 https://ndb796.tistory.com/85 네트워크 통신을 위한 넷캣(Netcat) 설치 및 사용법 네트워크 상에서 특정한 컴퓨터와와 통신하기 위한 유틸리티(Utility)로 넷캣(Netcat)을 사용할 수 있습니다. TCP/UDP 프로토콜을 이용하는 환경에서는 범용적으로 적용이 가능하다는 점에서 간단한 ndb796.tistory.com netcat을 설치하고 cmd에서 문제의 nc 명령어를 살펴보니 다음과 같은 게임 설명이 보여졌다. 간략하게 ..
[Pwnable 풀이] 2. col 2번째 문제에서부터 약간 길을 잃어서 벙쪘다ㅋㅋ 결론적으로 말하면 내가 너무 어렵게 생각해서 길을 잃었던 거고 다른 사람의 풀이를 한번 보고나니 뭐야 할만하네라는 생각이 들었지만 그래도 풀이를 작성해보기로 했다. 접속해서 col.c 파일부터 확인해보자 문제에 MD5 hash collision 얘기를 하길래 어? MD5는 32길이 코드인데 hashcode값은 8자리인거지? 입력 문자열은 왜 20개만 입력하는 거지? 의문을 품으며 MD5에 대해서 열심히 구글링 해봤는데 결국 못찾고 다른사람의 풀이를 참고했다. https://0xrick.github.io/pwn/collision/ pwnable.kr - collision My write-up for collision from pwnable.kr. 0xrick..
[Pwnable 풀이] 1. fd 처음으로 접한 포너블 문제! 리눅스 시스템의 파일 디스크립터를 알고 있다면 풀 수 있는 간단한 문제이다. Putty를 사용해 해당 시스템에 접속해보면 fd, fd.c, flag 3개의 파일이 디렉토리에 존재한다. fd 파일은 실행파일로 fd.c를 컴파일한 것으로 보여지며, flag 파일은 정답이 적힌 파일이지만 권한 부족으로 직접 확인할 수 없다. vi 에디터를 사용해 fd.c 파일을 열어보았다. C언어로 작성된 소스코드로 int main()의 괄호 속 변수들은 실행 할때 함께 주어지는 파라미터들을 저장하는 변수들이다. argc는 주어진 파라미터의 갯수, argv는 그 주어진 파라미터들을 저장하고 envp는 프로그램을 작동하는데 사용되는 환경변수들을 저장한다. 가장 첫번째 if는 프로그램이 시작될때 파라..

반응형