Web Hacking/LOS

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

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