웹해킹

Web Hacking/LOS

Lord of SQL Injection - succubus

preg_match('/prob|_|\.|\(\)/i' 를 통하여 'prob', '_', '()', '.' 를 필터링하고 있다. 또한 아래에서는 싱글쿼터(')를 필터링하고 있다. id 와 pw 의 입력값이 모두 싱글쿼터로 갇혀있기 때문에 어떻게든 탈출시켜야 한다. 이전에는 싱글쿼터를 한 번 더 사용함으로써 기존의 싱글쿼터를 탈출했다. 하지만 지금은 싱글쿼터가 필터링 되어있기 때문에 다른 방법을 찾아야 한다. 우선 더블쿼터를 이용해보려고 했다. 하지만 쿼리문 자체에서 싱글쿼터로 입력값을 감싸기 때문에 소용이 없다. 그 다음으로는 주석을 이용하려고 했다. 하지만 어떻게든 문자열을 탈출하여 'or TRUE' 라는 쿼리문을 만들어야 한다. 문자열 탈출이 답이다. mySQL 에는 '\' 를 이용함으로써 특수문자를..

Web Hacking/LOS

Lord of SQL Injection - assassin

wild card 를 활용하는 문제다. mySQL 에는 '_' 과 '%' 가 있다. mySQL에서는 guest 가 admin 의 계정보다 table 상에서 상단에 위치하여 먼저 검색되는 특징을 가지고 있다. 이를 이용하여 코드를 짜면 다음과 같다. 원래는 where 뒤의 구문만을 참으로만 만들면 되지만, 어렵지 않게 전체 admin 계정의 비밀번호를 파악할 수 있다. 아스키코드 값들을 넣어주는 과정에서 underscore('_')가 비밀번호로 인식되는 현상이 있어 이를 삭제하는 코드도 추가하였다. 1 # For LOS exploitation 2 import requests 3 4 requests.packages.urllib3.disable_warnings() 5 org_url = "https://los...

Web Hacking/LOS

Lord of SQL Injection - bugbear

필터링이 계속 추가된다. 그러나 모든 것에는 방법이 있을 것이다. like 연산자를 사용할 수 없다는 점이 추가되었다. '=' 을 우회하는 것에는 like 연산자와 in 연산자가 있다. in 연산자는, A in ('B') 와 같은 방법으로 사용한다. 필터링하지는 않지만, 괄호도 필터링 해보자. '(' - 0x28 ')' - 0x29 또한 ord() 함수를 사용할 수 없다. or 문자열 필터링에 걸리기 때문에다. 그렇게 때문에 decimal 이 아닌 hexadecimal 로 비교하면 되겠다. 1 # For LOS exploitation 2 import requests 3 4 requests.packages.urllib3.disable_warnings() 5 org_url = "https://los.rubi..

Web Hacking/LOS

Lord of SQL Injection(LOS) - darkknight

대부분의 내용은 비슷하지만 필터링이 바뀌었다. 주요적으로 substr, ascii 함수를 사용하지 못하는 필터링이 생겼다. SQL Injection 을 진행할 때 가장 중요하게 생각해야할 부분은 필터링이 아니라 GET 방식으로 입력받는 데이터가 실제로 어떻게 parsing 되는지이다. pw의 경우 query 문으로 전달한 데이터는 문자열로 parsing 된다. 하지만 no의 경우 데이터가 정수형으로 parsing 되기 때문에 따옴표로 문자열이라는 것을 지정하지 않는 이상 다른 문자열 데이터는 무시되는 것 같다. 이러한 이유로 아래 exploit 코드의 28번째 줄에서 보통의 방식에서 사용하던 + str(i) + ... + chr(j) 과 같은 방식은 PW가 모두 '%'로 출력되는 오류가 발생하였다. qu..

Lucvs
'웹해킹' 태그의 글 목록 (2 Page)