Wargame/Load of SQL injection (rubiya)(16)
-
Los skeleton 10번 문제 (rubiya)
위의 쿼리문이 보이는데 id는 guest 로 지정되어있고 pw 뒤의 거짓의 값이 붙어서 어떤 값이던지 입력이 안될 것이다. 그래서 뒤의 거짓의 값을 주석으로 우회해주고 id 를 admin 으로 변조해주면 문제가 풀릴 것 같다. 우선 id 를 admin으로 만드는것 앞에서 많이 했기 때문에 바로바로 쿼리문을 작성하겠다. ?pw=%27%20or%20id=%27admin id의 값을 admin으로 바꿔주었다. 하지만 아직 뒤의 값을 주석으로 처리하지 못했으니 '로 문자열을 끝내고 #을 입력해주어 뒤의 값을 주석 처리해보자. ?pw=%27%20or%20id=%27admin%27%23
2019.10.10 -
Los vampire 9번 문제 (rubiya)
이번 문제도 id가 admin 이면 풀리는 문제이다. 하지만 str_replace 함수로 admin 을 입력하면 막힌다. 그렇지만 -> str_replace() 함수의 취약점으로 admin을 만들어 줄 수 있다. https://qhrhksgkazz.tistory.com/176 위의 사이트를 통해서 str_replace() 를 우회하는 법을 더 자세히 알 수 있습니다. str_replace 함수는 필터링할때 그 문자만 걸러주기 때문에 만약 admin 을 필터링 한다면 aadmindmin 을 입력해주면 a+admin+dmin 처럼 계산되어 admin을 지워주고 a 와 dmin 을 붙혀주어서 admin 을 만들어 줄 수 있다.
2019.10.10 -
Los troll 8번 문제 (rubiya)
그냥 id 의 값이 admin 이면 풀린다. 이전의 문제는 id 를 ereg 함수로 입력받아서 대소문자 구별을 안했지만 이번의 문제는 preg_match 함수라 대소문자로 나눠서 입력해도 뚫리지 않는다. 하지만 왜인지모르게 Admin admIn 처럼 대소문자를 구별해서 입력하면 문제가 풀린다...
2019.10.10 -
Los orge 7번 문제 (rubiya)
이번 문제도 4번 문제와 비슷하게 admin 의 비밀번호를 맞추는 문제이다 . 하지만 or 과 and 연산자가 막혀있기 때문에 파이프와(||) 앰퍼센트(&&) 기호로 우회해 length() , substr() 함수를 사용해서 이 문제를 풀어보자. ?pw=%27%20||%20id=%27admin%27%20%26%26%20length(pw)=8%23 이러한 파라미터 값을 통해 pw 의 길이가 8인것을 구했으니 python 코드를 이용해 비밀번호를 추출해보자.
2019.10.10 -
Los darkelf 6번 문제 (rubiya)
이번문제도 id 를 어드민으로 만들면 풀리는 문제이다. 하지만 preg_match 함수로 or 과 and 연산자를 막아놓았다. 그렇지만 or과 and 연산자는 각각 ||(파이프) , &&(앰퍼센트) 기호로 우회할 수 있다. 이를 이용해서 id 값을 admin 으로 지정해주자.
2019.10.10 -
Los wolfman 5번 문제 (rubiya)
이번문제는 id 가 admin 이면 solve 함수가 실행되어 풀리는 문제이다. 이전처럼 or , and 연산자를 활용해 바로 쿼리문을 날려보자. ?pw=%27%20or%20id=%27admin%27%23 이러한 쿼리문을 날렸는데 공백은 쓰지 말라고한다.. 저 쿼리문에서 ' -> %27 공백 -> %20 %23 -> # 을 의미하는데 모두 url encoding 된 값이다. 그렇다면 %20을 어떻게 해줘야하는데 mysql 에서 공백을 우회하는데에는 1. Tab : %09 - no=1%09or%09id='admin' 2. Line Feed (\n): %0a - no=1%0aor%0aid='admin' 3. Carrage Return(\r) : %0d - no=1%0dor%0did='admin' 4. 주석 ..
2019.10.10