Web Hacking

Web Hacking/LOS

Lord of SQL Injection - green_dragon

오랜만에 id가 admin인지만을 묻는 문제가 나왔다. 또한 첫 번째 query문이 정상적으로 전달되었을 때, query2에서 첫 번째 query의 결과를 가져와 id가 admin인지를 검사한다. 우선 첫 번째 query문은 많이 해왔던 역슬래시를 이용한 문자열 탈출을 하면 된다. ?id=\&pw= or 1%23 여기까지는 간단하다. 아래 조건문을 만족하기 위해서, query문이 정상적으로 날라가야 한다. MySQL에서는 query문이 정상적으로 작동하기 위해서 where 뒤의 부분을 참값으로 만들어주거나, subquery 문이 존재할 경우 select로 선택할 column의 개수와 subquery로 선택할 column의 개수가 같아야 한다. 예를 들어서 이번 문제같은 경우는 선택할 column의 개수가..

Web Hacking/LOS

Lord of SQL Injection - hell_fire

드디어 table이 시각적으로 출력되기 시작하였다. query문도 order by 를 통하여 정렬하는 query문으로 변경되었다. 문자열 필터링에서 sleep, benchmark 가 빠진 것을 보아 time-based sql injection 에 관한 문제인 것 같다. Time-Based SQL Injection 이란, query문에 시간을 delay 시키는 함수, sleep/benchmark 등을 사용하여 요청에 대한 응답시간을 의도적으로 지연시키는 방법이다. 어떻게 사용하는 것인가? 우선 문제에 간단하게 테스트해보자. ?order=1 위와 같이 query 를 전달할 경우, 1번 column, 즉 id column 을 기준으로 table 이 정렬된 것을 볼 수 있다. admin 의 email 주소는 p..

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 이..

Lucvs
'Web Hacking' 카테고리의 글 목록 (7 Page)