이미지는 각각의 색을 가지는 여러 픽셀들이 모여서 이루어 진 것이다.  이런 픽셀들의 색을 나타내는 방식은 여러 가지가 있을 수 있다. 예를 들어, RGB 처럼 빨간색, 녹색, 파란색의 섞인 정도를 통해 색을 표현할 수도 있고, 밝기, 명도, 채도 등의 다른 방식으로도 역시나 가능하다.  YUV도 역시 이런 방식들 중의 하나로, 색 정보와 밝기 정보를 세 가지 채널에 구분해 한 픽셀의 색을 나타내는 방식이다.

더보기


  1. 전현진 2010.08.15 08:02 신고

    자료 잘 보았습니다(__)

    YUV Color Model에 대해 조사하고 있는데 내용이 너무 좋은것 같아서 퍼갑니다

    문제가 된다면 삭제 하겠습니다(__)

  2. 민i 2010.12.03 20:02 신고

    좋은 내용이네요 담아갈게요^^



1. 소개

버퍼 오버플로우 공격은 해킹에서 가장 기본적으로 다뤄지는 방법이다.  워낙 많은 프로그램들이 이 취약점을 갖고 있기 때문에 네트워크나 다른 여러 시스템을 해킹하는데 많이 이용된다.  하지만 이런 인기에 비해 직접 공격을 구현하기는 절대 쉬운 일이 아니다.  컴퓨터에 대한 많은 지식들이 기본적으로 바탕이 된 상태에서 프로그램의 취약점을 찾아내는 경우에만 비로소 버퍼 오버플로우 공격이 성공할 수 있게 된다.  여기서 내가 다루고자 하는 것은 이미 발견되어 있는 코드를 그냥 이용하는 것에 그치지 않고 직접 버퍼 오버플로우 취약점을 발견하여 공격하는 방법을 스스로 알아내는 것을 목표로 한다.  그러므로 여러 기본 지식을 간략히 설명한 후에 몇 가지 예시를 같이 올릴 예정이다.
단, 모든 내용은 웹문서 STACK OVERFLOW EXPLOiTS ON LiNUX/BSDOS/FREEBSD/SUNOS/SOLARiS/HP-UX (http://freeworld.thc.org/papers/OVERFLOW.TXT)에 근거한다.

더보기




아주 간단하게 XML이나 HTML 태그를 제거하고 중간에 있는 텍스트 정보만 출력하는 스크립트를 짜보았다.
대부분의 <, > 괄호 안에 데이터들은 바로 제거가 된다.
한가지 더. 이메일 주소를 <, > 괄호 안에 넣는다면, 바로 제거가 됩니다.ㅋㅋ

추가. 파이썬에서는 regular expression을 이용해서 unicode를 처리하는 부분이 상당히 취약하다.
그래서 펄에서 이 스크립트를 짰고, 이 스크립트는 유니코드 파일에서도 문제없이 동작했다.
파이썬에서 유니코드 처리하는 부분이 더 있는지 찾아봐야 할 것 같다.

#!/usr/bin/perl -w

# system을 이용해 쉘 커맨드를 실행.
# 출력용 디렉토리 생성.
system 'mkdir output';

# 읽어들일 파일들. 배열로 읽어들인다.
@files = <out/*/*>;

# 각 파일들을 반복한다.
foreach $file (@files){
        # 패스를 각 부분으로 나눔.
        # out/a/b 를 ["out", "a", "b"]로 넣음.
        @curr = split(/\//, $file);

        # 각각의 중간단계 디렉토리를 생성.
        # 중복시에 에러 메세지 출력 안 되도록 '> /dev/null 2>&1' 을 추가해줌.
        system "mkdir output/".$curr[1]." > /dev/null 2>&1";

        # 한 파일을 FILE_IN에 읽어들임.
        open FILE_IN, "<:encoding(UTF-8)", $file or die $!;

        # 입력파일의 여러 줄을 한 스트링으로 합치는 과정.
        $input = "";
        while (my $line = <FILE_IN>) {
                $line =~ s/\s+$//g;
                $input = $input." ".$line;
        }

        # 태그 부분을 제거하는 regular expression.
        # \p{C}: Control Characters.
        # \p{S}: Math Symbols .
        # \p{N}: Numeric Characters.
        # \p{L}: Any Languages.
        # \p{P}: Punctuation Characters.
        # \p{Z}: White Spaces.
        # \p{M}: Special Marks.
        # \s : White Spaces.
        # \:, \; : Semi-colon, Colon.
        # s는 스위치를 의미, 마지막에 g는 모든 occurrence 전부 변경.
        $input =~ s/<[\p{C}\p{S}\p{N}\p{L}\p{P}\p{Z}\p{M}\:\;\s]+>//g;

        # 출력용 파일.
        # utf-8로 인코딩해서 출력.
        open FILE_OUT, ">>:encoding(UTF-8)", "output/".$curr[1]."/".$curr[2] or die $!;
        print FILE_OUT $input."\n";

        # 파일들 닫기.
        close FILE_OUT;
        close FILE_IN;
}


+ Recent posts