재미 삼아 학과 홈페이지 뚫기 시도.
먼저 로그인 창에 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