Wargame(Web)/Lord of SQLInjection

    (Lord of SQLInjection) evil_wizard 문제

    (Lord of SQLInjection) evil_wizard 문제입니다. 이전에 풀었던 hell_fire와 비슷합니다. 물론 주석에 same with hell_fire? 냐고 물어봐서 조금 무섭긴 하지만 겁먹지 맙시다. 이전 문제처럼 1, 2, 3을 각각 넣어서 결과를 보면 전부 admin이 먼저 정렬되는 결과만 나옵니다. 일단 이전 문제와 비슷하니 if문을 활용하는 코드를 넣어보면 쿼리의 실행에는 문제가 없습니다. 곰곰히 생각해보다가 아예 없는 열을 넣으면 에러가 생길테니 그것으로 해결이 되지 않을까 싶어 3열이 최대인 테이블에 6을 넣어봤습니다. 어째서인지 모르겠으나 결과가 출력이 됩니다. 해서 False 결과가 나오게 만들어봤더니 rubiya를 먼저 정렬시키는데 성공했습니다! 이제 이전문제와 같은..

    (Lord of SQLInjection) hell_fire 문제

    (Lord of SQLInjection) hell_fire 문제입니다. 일단 코드가 두개로 나뉘고 입력한 email을 확인하는 if문이 있으니 블라인드 SQL입니다. 다음으로 항상 입력하던 where조건 부분이 아닌 order by 부분에 값을 입력할 수 있게 되어있습니다. 일단 order by는 정렬을 해주는 구문으로 입력한 숫자에 따라 열을 기준으로 정렬을 해줍니다. 1을 입력하면 id를 기준으로 해서 a가 있는 admin을 먼저 정렬해주고 2를 입력하면 email을 기준으로 정렬해주는데 email이 *로 난독화 되어있는데 정렬시에 admin을 먼저 정렬해주는 것으로 보아 rubiya의 r 보다는 앞에있는 값으로 예측됩니다. 3을 입력하면 scroe를 기준으로 정렬해주기에 100이 먼저 정렬되기에 r..

    (Lord of SQLInjection) dark_eyes 문제

    (Lord of SQLInjection) dark_eyes 문제입니다. 코드를 살펴보면 일단 두개로 나뉘어 있으며 두번째 코드에 pw를 확인하는 if문과 echo로 Hello가 없는 것으로 보아 이전 iron_golem과 같은 error기반 문제임을 알 수 있습니다. 필터링을 살펴보면 col , if , case, when ,sleep, benchmark 가 필터링 되어있습니다. 이전 iron_golem에서 사용했던 코드에서는 https://skysquirrel.tistory.com/107 (Lord of SQLInjection) iron_golem 문제 (Lord of SQLInjection) iron golem 문제입니다. 익숙한 두개로 나눌 수 있는 코드 마지막줄 쯤에 위치한 if(($result[..

    (Lord of SQLInjection) iron_golem 문제

    (Lord of SQLInjection) iron golem 문제입니다. 익숙한 두개로 나눌 수 있는 코드 마지막줄 쯤에 위치한 if(($result['pw']) && ($result['pw'] == $GET_['pw'])) 코드 Blind SQL 문제입니다. 이전에도 해왔던 Blind SQL이니 익숙하게 True 출력이 가능한 pw=%27||%20length(pw)>=1%23 코드로 참 거짓을 확인하려 했는데 어떠한 출력도 출력해주지 않습니다. 코드를 자세히 살펴보니 항상 봐오던 Hello admin 이나 guest 출력구문이 없는 상태입니다. 여기서 한번 막혀서 드림핵을 찾아보니 https://dreamhack.io/lecture/courses/286 [WHA] ExploitTech: Error & ..

    (Lord of SQLInjection) dragon 문제

    (Lord of SQLInjection) dragon 문제입니다. id 부분에 guest가 입력되어있고 # (주석처리) 가 되어있는 상태입니다. 주석처리를 우회하고 pw부분을 공격하여 id=='admin'에 로그인을 성공하면 된다고 합니다. 먼저 항상 써오던 주석처리 #은 정확히 어디까지 주석처리를 해주는가 검색을 해보니 https://ar9ang3.tistory.com/7 웹해킹 SQLI 우회기법 정리 - Webhacking SQL Injection Bypass Honey Tips 지금까지 웹해킹 워게임을 풀면서 깨달은(?) 우회기법을 정리하려 합니다. 모두 수기로 기억나는대로 작성하다보니 빠진 부분도 있을 것 같습니다. 기억나는대로 추가해서 수정하겠습니다. - o ar9ang3.tistory.com ..

    (Lord of SQLInjection) xavis 문제

    (Lord of SQLInjection) xavis 문제입니다. 문제 사이트에 접속해보면 PHP 코드를 제공해주고 있으며 코드가 두개인것이 한눈에 들어옵니다. 이제부터 위 코드 아래 코드로 구분하여 부르도록 하겠습니다. 먼저 아래 코드의 마지막쯤에 위치한 if 구문을 살펴보면 사용자가 제출한 pw와 저장된 pw가 완벽하게 일치해야 한다고 합니다. 즉 이전 문제들과 비슷하게 블라인드 SQL 인젝션 이 필요하다는 것을 알 수 있는 부분입니다. 그럼 다시 위 코드로 돌아와서 필터링부터 살펴보겠습니다. pw에서 prob, _ , . , ( ), regex, like 를 필터링 하고 있습니다. LoS문제를 계속하면서 블라인드 SQL 인젝션 문제를 해왔기에 이전 글을 참고해 https://skysquirrel.ti..

    (Lord of SQLInjection) nightmare 문제

    (Lord of SQLInjection) nightmare 문제입니다. 먼저 필터링을 살펴보면 prob, _, . , (, ), # , - 을 필터링하고 있습니다. 처음에는 (, ) 각각 필터링하고 있다고 생각했는데 여러가지를 시도하다 안되서 지인의 힌트를 받았는데 \( | \ ) 과는 다르게 \( \) 은 다른거니 잘 살펴보라고 하더군요 그렇게 힌트를 받아서 알아보니 () 괄호가 이렇게 아무것도 없는 경우에만 필터링을 한다는 것을 알게 되었습니다. 즉 ('')와 같은 상태라면 싱글쿼터 때문에 필터링이 되지 않습니다. 이어서 다음 구문을 살펴보면 strlen( )으로 길이를 6미만으로 제한하고 있습니다. 즉 우리가 입력할 수 있는 공격코드의 길이가 5이어야만 한다는 것을 알 수 있는 부분입니다. 다음 쿼..

    (Lord of SQLInjection) zombie_assassin 문제

    (Lord of SQLInjection) zombie_assassin 문제입니다. 문제코드를 살펴보면 이전 문제와 동일하게 쿼리가 성공하기만 하면 된다고 합니다. 이전 코드처럼 or 1=1 #을 이용하면 될것이고 필터링도 같으니 새로운 부분만 살펴보면 addslashes함수와 strrev함수를 사용하고 있습니다. addslashes함수는 싱글쿼터 더블쿼터 공백 앞에 \ 문자를 추가해 인식하지 못하게 합니다. \' 같은 형식으로요. 근데 strrev함수는 문자열을 뒤집는 함수 입니다. 즉 addslashes함수가 \' 형태로 문자를 인식못하게 해도 문자열을 뒤집어서 인식이 되는 취약점이라고 볼 수 있습니다. 다만 이전 서큐버스와 동일하게 \를 입력한다면 \\ 가 되어 문자로 인식되니 \ 와 ' 를 제외한 ..