본문 바로가기

Web Hacking/Lord of SQLInjection

(11)
[Lord of SQLInjection] los 11번 golem write up 문제는 위와 같다. blind sqli 같아 보이지만 substr이 필터링 되고 있고 = 부등호 역시 필터링 되고 있다. 첫 번째 조건에서 id가 admin일 때 쿼리의 참 거짓을 확인할 수 있다. 이점을 이용하자. admin's pw length 길이는 >, 7일때는 참을 반환하고 있다. 8을 넣어보자 8을 넣으니 거짓이 됐고 따라서 admin의 길이가 8자리임을 추측할 수 있다. exploit import requests import string ch = string.digits + string.ascii_letters + string.punctuation url ..
[Lord of SQLInjection] los 10번 skeleton write up 싱글쿼터 탈출 후 주석처리 ㄱㄱ..
[Lord of SQLInjection] los 9번 vampire write up admin을 필터링하고 있지만 str_replace로 대체만 하고 있기 때문에 admiadminn으로 우회
[Lord of SQLInjection] 8번 troll write up 문제 코드이다. 문제 해결 조건으론 쿼리문의 결과로 id가 admin일 경우 해결된다. 필터링은 두 가지다 1. 싱글쿼터 -> 우회 불가능 -> 싱글 쿼터 탈출 안됨;; 2. admin -> 우회 가능 경우의 수는 두 가지다. 싱글쿼터를 탈출해서 id='admin'을 만든다. 또는 싱글쿼터 안에서 id='admin'을 만든다. 전자는 내가 가진 지식으론 불가능인 것 같다. 후자로 접근 ㄱㄱ 싱글쿼터 탈출 x char()함수나 concat() 등을 이용하면 싱글쿼터 탈출이 안 돼서 함수를 문자열로 인식한다.. 시도 1 null 바이트 삽입 널 바이트 삽입을 통해 우회를 시도했다. 결론은 실패. query에는 admin으로 들어가 있으나 admi까지만 문자열로 인식하는 것 같다. 정규표현식을 자세히 보니 i..
[Lord of SQLInjection] 7번 orge write up 위 사진은 문제 코드이다. 이전 문제와 같이 첫 번째 필터링까진 or, and까지 필터링이 같지만, 2번째 필터링에서 addslashes함수를 통해 싱글쿼터를 필터링하고 있다. 또한 이 문제는 쿼리문이 참이 되는것 만으로 해결 되지는 않으며 blind sql injection을 통해 admin의 pw을 구해 입력해야한다. 먼저 1번째 필터링이 통과되면 hello [uid]가 나오는 점을 이용해야한다. 첫 번째 필터링은 싱글쿼터가 살아있기 때문에 sqli이 가능하다. or 필터링이 되고 있어 || 로 우회 후 새로운 조건 절을 만들었다. and를 이용헤 pw의 조건을 비교할 수 있다. (and 연산을 대체할 수 있는 &&는 url에서 사용할 경우 url encoding이된 %26으로 사용해야 한다. 이유로..
[Lord of SQLInjection] 6번 darkelf write up 위 사진은 문제 코드이다. 이전 문제에서 or과 and 필터링이 추가 되었다. 마찬가지로 id='guest'로 하드코딩 되어 있기 때문에 or 구문을 이용해서 새로운 조건절을 선언해주어야 한다. 문제는 id가 admin일 경우 해결된다. and를 대체할 수 있는 연산자는 &&이 있으며 or은 || 가 있다. pw=a' || id='admin'%23 클리어
[Lord of SQLInjection] 5번 wolfman write up 이번 문제는 공백이 필터링 되고 있으며, id가 admin일때 문제가 해결된다. 그러나 코드에는 id가 guest로 하드코딩 되어 있기 때문에 수정이 불가능하기 떄문에 or id='admin'으로 만들어줘야 한다. 공백은 %09로 우회가 가능하다.
[Lord of SQLInjection] 4번 orc write up 이번 문제는 두 번의 필터링을 진행하고 있다. 먼저 prob _ . ( ) 을 필터링하며 2차적으로 addslashes함수를 이용하여 싱글쿼터를 필터링 중이다. addslashes는 싱글쿼터('), 더블쿼터(""), 널문자, 백슬레쉬(\)에 해당하는 문자가 들어오면 백슬레쉬를 앞에 붙여 sql injection을 방어하게 된다. ex) ' -> \' 1차 필터링은 가볍게 우회가 되나, addslashes를 우회가 안된다. 싱글쿼터를 어떻게 우회할지 생각해봐야 한다. addslashes로 싱글쿼터가 이스케이프될 경우 이를 우회하기 위해선 한 가지의 전제조건이 선행되어야 한다. euc-kr을 utf-8로 변환하는 작업을 하고 있는 경우에만 멀티바이트 삽입을 통해 우회가 가능하다. 먼저 '(%27)을 보낼경우..