전체 글

Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Web Hacking/Techniques

Real World SQL Injection

테스트는 다음 사이트에서 진행하였다. http://testphp.vulnweb.com/artists.php 1. query 문에 싱글쿼터 한 마리를 태워서 전송 ?artist=' 오류 메세지가 출력된다. php문의 line 62에서 mysql_fetch_array() 함수가 사용된 것을 보아 작위적인 query문을 전달할 수 있음을 파악했다. 2. union 을 사용하여 두 가지 query 동시에 전송 ?artist=0 union select 1,2,3-- artist 와 관련된 column 은 2번 column 인 것 같다. 이번에는 DB의 이름을 알아보자. 1번 column 에 대한 정보는 출력되지 않는 것 같다. 3. database(), current_user() 함수를 query문에 전송 ?ar..

Web Hacking/LOS

Lord of SQL Injection - dark_eyes

바로 전 문제인 iron_golem 과 매우 유사하다. 'if' 등의 문자열이 추가적으로 필터링되며 query문에 error 가 발생할 때에 mysqli_error() 함수가 아닌 단순한 exit() 함수로 보내버린다. 우선 query문에 오류를 만들어보자. ?pw=' 아무 것도 뜨지 않는다. 전 문제에서는 오류가 발생하면 return 값에는 하나의 열만이 존재해야 한다는 문자열이 출력되었다. 오류가 발생하면 빈 페이지가 뜨는, 바로 이 점을 역으로 이용하는 것이다. 만약 오류가 발생하지 않고 정상적으로 query문이 실행됐다면 php 구문이 들어있는 원래의 문제 페이지가 보여질 것이다. 이것도 문자열이 출력되는 것 아닌가? 하지만 우리는 'if'라는 소중한 전우를 잃었다. select - union 이..

Web Hacking/LOS

Lord of SQL Injection - iron golem

기본적인 Blind SQL Injection 문제인 것 같아 보이지만 참값을 확인할 방법이 보이지 않는다. 이전 문제들에서는 'Hello admin 이라는 문자열을 출력시켜줌으로써 우리가 전달한 query문에 대한 참값을 알 수 있었다. 코드 line 8 을 보면 myslqi_error() 함수를 사용하고 있다. 이 함수는 query 문에 오류가 있을 시에 해당하는 오류를 출력시켜주는 함수이다. 이것을 이용하면 될 것 같다. 어떤 오류를 출력시키는지 한 번 살펴보자. ?pw=' 위와 같은 query 문을 전달하였더니 아래와 같은 오류 메세지가 출력되었다. You have an error in your SQL syntax; check the manual that corresponds to your MySQ..

Web Hacking/LOS

Lord of SQL Injection - dragon

간만에 간단한 문제가 나왔다. id 바로 뒤에 주석이 있어 pw 단에 어떠한 값을 입력해도 무력화된다. MySQL 에서 주석 사용은 다음과 같다. 주석 설명 # 해당 라인을 주석화 -- 해당 라인을 주석화 /* */ 여러 라인을 주석화 그렇다. #은 한 줄만 comment(주석)화 한다. 따라서 줄바꿈 제어문자를 pw 입력값에 넣으면 될 것 같다. pw=%0a or id='admin'%23 하지만 위와 같이 넘겨주면 id='guest'가 우선적으로 처리되어 guest로 로그인된다. 앞에 guest를 무력화시키자. 간단하다. and 0 으로 거짓으로 만들어주면 된다. pw=%0a and 0 or id='admin'%23

Lucvs
Lucvs