blind sql injection
-
LOS 22 - dark_eyes Write up (union select를 이용한 에러 기반 blind sql injection, if문 필터링 우회)CTF/Web 2020. 4. 1. 03:15
이번 문제도 에러 기반의 문제이다. 하지만 저번 문제에서 쓴 if문이 막혀버렸다. 이럴 때는 union select를 사용하면 된다. union select 는 어떤 원리로 이용 할 수 있을까? 우선 기존 union select 를 통한 우회방법을 인지하고서 풀 수 있는 문제이다. 그점은 이번 라업에선 넘어가도록 하겠다. 간단히 짚고 넘어가면 select 1을 하면 필드에 1이 들어간다. 그런데 여기에 union select를 하면 어떻게 될까? 1뒤에 3이 밑에 들어간다. 이걸 어떤식으로 이용하는 걸까? 그건 바로 2줄이라는 특징을 이용하는 것이다. 우선 우리가 푸는 Los 문제는 sql문을 읽고 가져오는 데이터가 1줄이다. 하지만 우리가 2줄의 결과값을 억지로 넣어서 가져오게 한다면 어떻게 될까? ?..
-
LOS 13 - bugbear Write Up (blind sql injection)CTF/Web 2020. 3. 21. 03:27
필터링을 먼저 확인해보면 싱글쿼터, substr, ascii, =, or, and,' ', like, 0x 정말 많은 것들을 사용하지 못하게 되었다. 이럴 때 우리는 어떻게 해야할까? 사실 저번 단계에서 한 것과 큰 차이는 없다. import requests url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?" headers = {"cookie":"PHPSESSID=qdc234242342"} pw ='' for i in range(1,9): for c in range(22,133): query = "no=6||no%0ain%0a(2)%26%26mid(pw,{},1)%0ain%0a(%22{}%22)%23".form..
-
LOS 12 - (darknight) Write Up (blind sql injection/substr, ascii, = 필터링 우회 및 like, in, mid 사용)CTF/Web 2020. 3. 20. 02:49
substr과 ascii, '=', '(싱글쿼터)이 필터링 되어 있다. 싱글쿼터는 사실상 더블쿼터를 사용하면 된다. (이 문제에선 따옴표를 사용할 필요가 없어서 쓰이진 않았다.) 그 이외의 필터링은 전 단계와 동일하다. import requests url ="https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?" headers = {"cookie":"PHPSESSID=qadsf"} pw = '' for i in range(1,9): for c in range(22,133): query ="pw=&no=9||no like 2 and ord(mid(pw,{},1)) in ({})%23".format(i,c) #여기서 no의 ..
-
LOS - 11 (golem) Write Up (substr, = 필터링 우회, like와 in 활용)CTF/Web 2020. 3. 19. 01:46
이번에는 or ,and, substr, (, = 이 필터링이 되었다. = 필터링을 우회하기 위하여 like문법을 사용하여 id값에 'amdin'을 넣었고 in을 사용하면 =의 역할을 할 수 있기때문에 in 문법을 사용하였다. ex) lenght(pw) in 8 이제 이 우회기법을 이용해서 비밀번호를 알아내면 되는데 앞서 말한대로 =이 필터링이 됨으로 비교 연산자를 사용하였고 and or 필터링으로 &를 사용해야하는데 url 자체 기능으로 &가 사용되기 때문에 url 인코딩을 따로 해주어 %26으로 표기해주었다. substr이 필터링 되어있어서 right와 left를 사용하여 풀었다. (사실 mid를 쓰면 쉽습니다) import requests url = "https://los.rubiya.kr/chall..
-
Los - 4 (orc) Write Up (Blind Sql injection 코딩 방법)CTF/Web 2020. 3. 12. 19:42
Los.4_orc 문제 분석 4번째부터 벌써 난감한 문제가 나왔다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); get을 통해 가져온 pw와 sql 결과문에서 나온 pw가 같아야지만 문제가 최종적으로 풀리게 되어 있다. 즉 참, 거짓을 통해 직접적으로 푸는 방식이 아닌 참, 거짓을 통해서 비밀번호를 유추해서 비밀번호를 직접 적어야 하는 문제이다. 이런 문제 유형을 보통 blind sql injection 문제라고 한다. 해결방법은 보통 Python 코드를 작성하는 것이다. Blind sql 사전 지식 이 문제를 풀기 위해서는 기본적으로 length 함수를 사용할 줄 알아야 하며, substr을 사용할 줄 알아야 한다. Lengt..