본문 바로가기
WEB HACKING/웹 해킹[이론]

SQL Injection : Error Based SQL Injection

by madevth 2021. 11. 4.
반응형

Error Based SQL Injection은 말 그대로 "Error에 Based 된", 즉 고의적으로 오류가 있는 SQL 질의문을 삽입하여 출력되는 에러의 내용을 바탕으로 필요한 정보를 얻는 공격이다. 이때 중요한 것은 문법이 맞지 않는 SQL Query 문을 삽입하게 되면 Compile이 되지 않기 때문에 문법적 에러가 아닌 논리적 에러를 포함한 쿼리문을 삽입해야 한다는 것이다.

 

Error Based SQL Injection에 자주 사용되는 함수를 살펴보면서 사용 방법을 익혀보자.

 

① Updatexml

[syntax]

updatexml(xml_target, xpath_expr, new_xml)

updatexml 함수는 지정된 xml_targetxpath_exprxpath 표현식과 일치하는 부분이 존재하면 xml_targetnew_xml로 변경하는 함수이다.

updatexml(null, concat(0x3a, (실행할 쿼리문)), null)

위와 같이 updatexml의 문법을 맞추되, 논리적 에러를 포함하도록 작성하여 쿼리문에 삽입한다면, 에러가 출력되면서 원하는 정보를 얻을 수 있다.

 

updatexml(null, concat(0x3a, (select database())), null)

address 테이블에서 에러를 포함한 updatexml 함수를 사용하니 DB 이름이 포함된 에러 메시지가 출력된 것을 확인할 수 있다.

 

 

② Extractxml

[syntax]

extractvalue(xml_target, xpath_expr)

extractvalue 함수는 xml_target에서 xpath_exprxpath가 일치하는 xml 노드를 반환하는 함수이다.

extractvalue(0x3a, concat(0x3a,(실행할 쿼리문)))

위와 같이 extractvalue의 문법을 맞추되, 논리적 에러를 포함하도록 작성하여 쿼리문에 삽입한다면, 에러가 출력되면서 원하는 정보를 얻을 수 있다.

 

extractvalue(0x3a, concat(0x3a,(select database())))

마찬가지로 address 테이블에서 에러를 포함한 extractvalue 함수를 사용하니 DB 이름이 포함된 에러 메시지가 출력된 것을 확인할 수 있다.

반응형

'WEB HACKING > 웹 해킹[이론]' 카테고리의 다른 글

SQL Injection 대응 방법  (0) 2021.11.12
SQL Injection : Blind SQL Injection  (0) 2021.11.05
SQL Injection : Union SQL Injection  (0) 2021.10.28
SQL Injection : 로그인 Case 별 인증 우회  (0) 2021.10.22
SQL Injection  (0) 2021.10.21

댓글