Los
-
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 - 5 (WOLFMAN) Write Up (공백 필터링 우회)CTF/Web 2020. 3. 13. 19:49
이번엔 공백기호가 필터링 되어 있다. %20도 안먹히고 +도 안먹힌다. 하지만 %0A는 먹혔다. linefeed %0A 라고 한다. 라인피드의 기능은 커서를 현재 행의 다음행으로 옮기는 것이다. 그래서 0a를 사용하면 스페이스의 역할을 해주게된다. https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php?pw=%27%0aor%0aid=%27admin 라고 쿼리문을 입력하면 성공
-
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..
-
LOS - 3 (goblin) Write UpCTF/Web 2020. 3. 11. 17:39
Los.3_goblin select id from prob_goblin where id='guest' and no= 우선 필터링 되는 부분을 보면 싱글쿼터와 더블쿼터와 역쿼터를 필터링 중인 것을 확인할 수가 있다. id가 'admin'이면 문제는 풀리게 되어 있다. where 절을 보면 guest의 no의 번호를 올바르게 입력하면 "Hello guest"가 나올 것으로 보인다. 한번 guest에 맞는 no을 찾아보자. 사실 찾을 필요는 없다. 그저 이 문구가 나오지 않게 하는 것이 중요하다. 우리는 이제 where id='guest' and no= 절이 거짓이 되도록 만든 후 or 연산을 시작 할 것이다. 우리는 사전에 필터링 문에서 쿼터들이 다 먹혀있는 것을 확인했다. 하지만 no 컬럼은 int형 컬럼..