본문 바로가기

[Pwnable] Exploit Exercises Exploit Exercises - http://exploit-exercises.com/ 해당 사이트에서 Exploit 에 대해 공부할 수 있다. 난이도로는 Nebula -> Protostar -> Fusion 로 갈수록 어려워진다. Nebula : 리눅스 환경에서의 여러가지 기초적인 문제들을 문제로 만들어 제공 Protostar : Nebula 보다는 조금 더 심화된 문제들이 주를 이루고, 메모리 구조에 대한 이해와 공격을 다룬다 Fusion : 위 두가지를 합쳐 조금 더 심화 된 학습을 유도 (anti-exploitation mechanism)
[Python] 시작해봅시다 perl을 주 스크립트로 사용하였으나, 사용하다보니 불편한점이 발견되어 python도 어느정도 배워보려고 합니다. 1.1 파이썬이란? 파이썬은 1991년 귀도 반 로썸(Guido van Rossum)이 발표한 인터프리터 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 프로그램인 "Montry Python's Flying Circus"에서 따왔으며, 파이썬의 사전적인 의미를 나타내는 뱀을 아이콘으로 사용하고 있다. 1.2 파이썬의 특징 - 가독성 : 문법이 간결하고 가독성이 좋다 / 코드블럭을 들여쓰기로 구분한다. - 풍부한 라이브러리 : 많은 라이브러리가 기본으로 포함되어 있으며, 확장성도 좋음. - 접착성 : C로 구현되어 있는 모듈을 쉽게 만들어 붙일 수 있다. - 무료 : 파이썬 소프트웨어 재..
[ Pwnable ] SIS/System 3 -------------------------실패----------------------------------system 3 문제 제목 : Remote 공격 문제 설명 : 리모트 공격을 수행하여 쉘을 획득하고 키를 읽어라. ip : 221-143-48-107 port : 8602 인터넷으로 접속 했을 때, iceCream Game Returns 라는 메시지가 출력 된다. 별거 없다. nc로 접근해본다. 값을 입력하면서 게임을 진행할 수 있다. NickName 입력에서 buffer 크기가 32 bytes 라고 추측 할 수 있다. 소스가 없어서 분석을 할수가없네... 어떻게 해야 될까요?
[ Pwnable ] SIS / System 2 system 2 문제 제목 : 확률 게임에서 이겨라! 문제 설명 : 확률 게임이 있다. 이 게임은 1에서 100중 숫자를 선택하여 컴퓨터가 선택한 값과 일치 해야 된다. 일치하면 잭팟이 터지고 SHELL을 획득 할 수 있다. 게임에서 이겨라! 접근 IP : 221.143.48.107 접근 PORT : 22 접근ID : system200 접근 PW : securitypractice 문제 설명과 같이 프로그램을 실행 시키면, game start와 name change, exit이 보인다. game start를 입력하면 1~100의 수 중 하나를 입력하고 실패하면 다시 선택 메시지가 출력 된다. 여기서 생각난 방법은 그냥 brute forcing. 처음엔 shell script로 game start를 하고 1..
[ Pwnable ] SIS / System 1 System 1 문제 제목 : 취약한 메아리 프로그램 문제 설명 : 개발자는 메아리 프로그램을 제작 하였다. 허나 어설픈 보안 설정으로 해당 프로그램의 취약점이 존재한다. 취약점을 찾아서 SHELL을 획득 하여라. 접근 IP : 221.143.48.107 접근 PORT : 22 접근 ID : system100 접근 PW : !kisa_system_gogosing~!!! 해당 프로그램을 보면 root100 유저로 setuid가 걸려있다. 프로그램을 실행시키면, INPUT이 출력 되고 입력한 값을 그대로 출력해 준다. gdb 로 프로그램을 분석해 보면, euid를 가져와서 그 값으로 setreuid를 하고 system 함수를 실행시키는 것을 볼 수 있다. $rsi 레지스터에는 geteuid로 가져온 값이 들..
[Reversing] rootkit 1 Rootkit1 해커들이 시스템을 해킹할 때 시스템 이용자가 해킹당하고 있음을 알지 못하도록 하기 위해 사용하는 도구(프로그램 등)를 말한다. 루트킷을 설치하는 목적은 해커들이 나중에 시스템에 접근할 때 들키지 않으려는 것이다. 즉, 해커들은 이 도구를 사용해서 컴퓨터의 제어권을 가로채고 자신들이 하는 일을 감출 수 있다. 커널 모드와 유저 모드 Ring 0~3까지 총 4가지 권한이 존재하고, Windows에서는 Ring 0와 Ring 3 만을 사용한다. Ring 3는 유저 모드, Ring 0는 커널 모드라고 한다. Ring 3는 유저 레벨 프로그램의 코드가 실행되며, 특별한 명령어(int 2E, SYSENTER)를 통해 Ring 0 권한에 진입할 수 있다. Ring 0에서는 하드웨어에 직접 접근하거나 ..
[Pwnable] 2013 CodeGate / Vuln 300 Vulnerable 300 파일을 실행하면, 숫자와 문자열을 입력하라고 한다. 숫자에 32를 입력하고 "aaaa"문자열을 입력하면 A~Z, [~'의 문자열과 함께 입력한 "aaaa"가 출력 된다. 숫자에 2048을 입력하고 "aaaa"를 입력하면 "aaaa" 그대로 출력 된다. 숫자에 -1을 입력하면 Segmentation fault를 출력하며 종료한다. 이제, 프로그램을 IDA로 분석을 한다. v0에 2052 byte를 할당하고, s(buffer)에 숫자와 문자열을 입력 받는다. 그리고 sub_8048840(class, buffer, size)를 통해 함수를 호출하고, 함수 포인터(정상: reply:)를 호출한다. sub_8048840(class, buffer, size)를 살펴보면 cmp를 통해 si..
2013년도 코드게이트 예선전이 끝났네요. 이번에 10명 팀으로 예선전에 나가서 27위를 하게 되었습니다. 이번에 웹이 약간 쉽게 나왔다 해도 팀원들 실력이 많이 향상된 것을 느꼈네요. 전 취약점 분야를 맡아서 36시간 동안 분석을 하였습니다만 못풀었습니다 ㅠㅠㅠ... 200점 문제에서 같이 푸는 형이랑 같이 분석을 해서 취약점을 찾고 리버스 쉘코드로 공격 코드를 만들어서 공격을 했습니다만 실패했습니다.형이 보기에도 제가 보기에도 공격코드에는 문제가 없어 보였는데 말입니다. 대회 환경이 공인아이피를 받지 못해서 학교에서도 해보고 (학교에서는 1만 번대 이하 포트는 막혀있어서 아예 대회 서버 접속 자체를 못했습니다 ㅠㅠ) 그리고 다른 형 집에 가서 공인 아이피로 nc 리슨을 했습니다만, 전혀 붙질 못하더라구요... ㅠㅠ 아무래도 환경에 문제가 많았..