본문 바로가기

Security

[Pwnable] 2013 HDCON 5번 luckyzzang exploit readellf를 통해 header를 확인하면 32-bit elf 파일이란 것을 확인 할 수 있다. hexray를 이용하여 소스들을 확인할 수 있다. main.cint __cdecl main(){ signed int v1; // [sp+2Ch] [bp-4h]@4 sockfd = socket(2, 1, 0); if ( sockfd == -1 ) { perror( "socket"); exit(1); } my_addr.sa_family = 2; *(_WORD *)&my_addr.sa_data[0] = htons(7777u); *(_DWORD *)&my_addr.sa_data[2] = 0; *(_DWORD *)&my_addr.sa_data[6] = 0; *(_DWORD *)&my_addr.sa_data[10] ..
[Pwnable] root-me.org/Hardened binary 1 Evernote Export root-me.org Hardened binary 1 문제 (*쉘 코드를 통해 바로 쉘을 띄울 경우 Segment falut를 출력하며 바로 띄우지 않고 다른 방법을 통해 쉘을 띄워야 공격이 성공한다) 파일을 IDA를 통해 열고 hexray를 실행 mainint __cdecl main(signed int a1, int a2){ int v2; // ecx@2 int result; // eax@9 int second_fgets; // [sp+2Ch] [bp-1024h]@5 int first_fgets; // [sp+30h] [bp-1020h]@5 FILE *fd; // [sp+34h] [bp-101Ch]@3 int buffer_4000; // [sp+38h] [bp-1018h]@..
[Pwnable] Exploit Exercises Exploit Exercises - http://exploit-exercises.com/ 해당 사이트에서 Exploit 에 대해 공부할 수 있다. 난이도로는 Nebula -> Protostar -> Fusion 로 갈수록 어려워진다. Nebula : 리눅스 환경에서의 여러가지 기초적인 문제들을 문제로 만들어 제공 Protostar : Nebula 보다는 조금 더 심화된 문제들이 주를 이루고, 메모리 구조에 대한 이해와 공격을 다룬다 Fusion : 위 두가지를 합쳐 조금 더 심화 된 학습을 유도 (anti-exploitation mechanism)
[ 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..