Web Hacking

Web Hacking/LOS

Lord of SQL Injection - phantom

table을 이용하는 문제가 다시 등장했다. 우선 차근차근 코드를 이해해보자. 제일 먼저 duplicate 이라는 문자열을 필터링한다. 필터링이 없었다면, insert 문 제일 뒤쪽에 on duplicate 를 적음으로써 기존에 있던 table 데이터를 우리가 원하는 특정 문자열이나 숫자로 값을 바꿀 수 있다. 그렇게 해서 no의 값이 1인 row를 다른 no 값으로 변경하여 email이 asterisk(*)로 변경되는 조건문을 뛰어넘을 수 있었다. 그 다음은 $_SERVER[REMOTE_ADDR] 로 접속자의 IP를 가져오고, joinmail 값을 가져와 하나의 row를 insert 한다. 예를 들어서 간단한 임의의 이메일을 전달해주면 다음과 같이 하나의 row가 추가된 것을 볼 수 있다. 한 가지 신..

Web Hacking/LOS

Lord of SQL Injection - red_dragon

박수가 절로 나오는 문제였다. 예전 문제에 admin 이라는 문자열 필터링을 우회하기 위하여 adadminmin 과 같은 방식으로 썼던 것이 기억 나는가? 무언가 유사한 패턴이다. 주석에 대한 특성도 같이 사용된 문제였다. 문제는 admin 계정의 no를 알아내는 것이다. pw를 찾는 것과 유사하다. Blind SQL Injection 문제로 보인다. id는 7글자밖에 사용하지 못한다. no 영역은 숫자가 아니면 1을 반환한다. 따라서 no 에서는 아무런 짓을 할 수가 없다. 처음에는 no영역에 16진수를 넣으면 되지 않을까 했지만 PHP 문법의 is_numeric 함수에서는 16진수와 2진수는 적용되지 않는다고 한다. 우선 id에서 Hello 라는 문자열을 출력시키기 위하여 필요한 최소 글자는 어떻게 ..

Web Hacking/LOS

Lord of SQL Injection - blue_dragon

우리의 친구 백슬래시를 잃었다. 문자열 탈출을 어떻게 할까가 매우 고민이었다. 백슬래시를 우회할 방법은 없는 것 같다. 또한 든든한 지원군 싱글쿼터도 읽었다. 청룡의 공격에 큰 피해를 입었다. 그런데 가만히 코드를 보면 mysqli_fetch_array 함수를 실행한 '이후'에 싱글쿼터와 백슬래시를 필터링하여 "No Hack ~_~" 이라는 문자열을 출력하는 페이지로 exit 시키고 있다. 싱글쿼터나 백슬래시를 이용하는 방법으로는 'Hello admin"이라는 문자열을 볼 수 없겠지만, 시간 측정 함수도 풀려있는 마당에 "No Hack" 페이지로 exit 되기 전까지 sleep 함수로 응답 시간을 지연시킬 수 있을 것 같다. 한번 해보자. 우선 간단한 참값을 넣어보자. ?id=' or if(1,sleep..

Web Hacking/LOS

Lord of SQL Injection - evil_wizard

이전 문제에서 sleep이나 benchmark 함수를 사용하지 못 한다는 점만 빼고 모든 것은 다 똑같다. SQL에서는 order로 table을 정리할 적에, 만약 order 에 대한 값이 오류를 일으킨다면 정상적인 table을 return 해주지 못하게 된다. 예를 들어서 order에 싱글쿼터만을 전달해주면, 과 같이 mysqli_fetch_array 함수가 아무런 값도 return 해주지 않아 우리가 보는 문제 페이지에도 아무런 table 값이 출력되지 않는다. 정상적인 query문이라면, 과 같이 모든 사용자들이 출력된다. 동작 그만. 이 점을 이용하면 되지 않을까? 우리는 Error-Based SQL Injection에서 수행한 방법처럼 특정 문자열이 출력되는 것을 이용하여 query문의 오류 여..

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