분류 전체보기
-
[CrackUs] LEVEL 18[+] Security [+]/CrackUs 2020. 7. 20. 21:48
두근두근 18번 문제! 더보기 참 흥미로운 문제다 9e307 * N (N은 2 이상의 수)는 에러를 발생하는 전형적인 쿼리다. 9e308과 같게끔 만들어야 하는데, 미친듯이 필터링 해놓아서 챙겨갈만한게 뭐가있을지도 잘 감이 안잡힌다. 으음... 한번 살펴보니, ||와 &&는 살아있다. 적극적으로 사용해야겠다. 그리고 -- 주석이 살아있는 듯하다. 좋아 이것으로 SQl Injection의 방향이 보인다. 또한 정확한 pw를 입력받아야하는 Blind SQL Injection을 요하지는 않는 문제로 보인다. 엇! 혹시나 하고 시도해 보았지만 풀려버렸다. -- 주석을 잘 안사용하는 경향이 있는데 이를 일깨워준 문제가 아닐가 싶다. 이번에도 이전 문제와 동일하게 Post 방식으로 Injection을 진행한다. 다..
-
[CrackUs] LEVEL 17[+] Security [+]/CrackUs 2020. 7. 20. 21:39
LEVEL 17! SQL Injection 교재에서는 16번 문제까지만 다루지만 업데이트되면서 20번까지 늘어났다! 선배님께서 말씀하시길 함정을 많이 파놓았다는데... 한번 시도는 해보자. 더보기 이번에는 sleep을 막아놓으셨다. 이전처럼 Good J0b :) 같은 후크도 없고 무엇을 기준으로 비밀번호를 알아내야할까. 이번에도 여전히 Time base! sleep은 시간을 늦춰주는 함수지만 sleep이 아니더라도 시간을 지연시킬 방법은 있다! sleep 함수 대채제 Benchmark() : 해당 명령어를 특정 횟수만큼 반복시킨다. count(*) from Table.columns: 테이블에 있는 모든 쿼리를 조회한후 숫자를 더해서 반환. 테이블의 칼럼 수에 따라 수행시간이 다르다. (CrackUs사이트..
-
[CrackUs] LEVEL 16[+] Security [+]/CrackUs 2020. 7. 19. 00:28
LEVEL 16 아이스크림 문제! 코드를 살펴보자. 우선 필터링이 많다. 1차적으로 union \ or 0x 를 필터링하고 쿼리를 실행한다. 그 이후에는 substr mid left if sleep ; # 등등 이것저것 많이 막혀있지만 두번째 필터링은 아무래도 상관없다. 우리는 첫번째 쿼리가 실행될때 Time Based Blind SQL Injection으로 비밀번호를 찾아낼 수 있으니까! 그리고 이전까지는 ord를 사용했지만 or가 필터링되는 바람에 ord까지 같이 못쓰게 됬다. 본인은 ascii함수를 이용하여 우회하였다. 클리어!
-
[CrackUs] LEVEL 15[+] Security [+]/CrackUs 2020. 7. 18. 23:34
LEVEL 15!! 이전까지의 Blind SQL Injection은 쿼리실행시 마다 Good J0b :D 과 같은 텍스트를 기준으로 진위를 판단했다. 하지만 이젠 텍스트가 없다. MySQL 에서 잘못된 쿼리가 실행됬을때 에러를 체크해 반환하는데 이를 기반으로 Blind SQL Injection을 해야한다. 이름하야 Error Based Blind SQL Injection! id = 'admin' and length(pw)=11 이 맞다면 오류를 발생시켜! 라는 의미의 쿼리를 삽입한다.
-
[CrackUs] LEVEL 13[+] Security [+]/CrackUs 2020. 7. 18. 20:59
LEVEL 13 $result['pw']==$_GET['pw'] 를 보니 이번에도 Blind SQL Injection 문제다. 하지만 이번엔 조금 다른 것이 substr을 필터링 해놓았다. 이전에 풀었던 or 필터링 문제에서 설명해 놓은 것 처럼 or 와 || 를 둘다 필터링 해놓지 않으면 무의미하다. substr또한 마찬가지다, mid, left right 로 대체가 가능하다. substr이 mid로 대체된다는 점을 알기만하면 LEVEL 11 문제와 별반 다르지않다고 생각했다 음...? 왜 안풀리지...? 문제는 $result['pw']==$_GET['pw'] 의 의미는 데이터베이스에서 가져온 pw와 URL쿼리에 삽입한 pw가 정확히 일치해야한다. 대소구분을 하지않는 mysql특성상 'AbCd' 와 '..
-
[CrackUs] LEVEL 12[+] Security [+]/CrackUs 2020. 7. 18. 07:25
LEVEL 12!! 코드를 살펴보자! 오오 신기한 쿼리다. 쿼리 자체에 주석이 삽입되어 있어, 우리는 저걸 피해야한다. 피해야한다? 으음... 안 피해도 될 것 같다! ?id=admin' and pw='c0ngr@z~&pw=c0ngr@z~ 줄바꿈을 사용하지 않고도 해결할 수 있다. 그렇다면 줄바꿈을 피해야만 하는 문제는? [Lord of SQLInjection] #20 dragon 야~ 이제 20번째 문제 드래곤! 뭔가 이제 엄청난 몬스터가 나온듯 하다. 좋아! 살펴보자! 신박하게도 쿼리 자체에 주석이 삽입되어있어 우리는 저걸 피해야한다. 줄바꿈(\n %0a)로 피할 수 있다! 필� devjounal.tistory.com
-
[CrackUs] LEVEL 11[+] Security [+]/CrackUs 2020. 7. 18. 04:21
LEVEL 11 딸기 문제! 코드를 살펴보자. 특별한 필터링이나 조건을 요구하지 않지만 $result['pw']==$_GET['pw'] 이부분! 즉 get방식으로 입력한 pw와 실제 데이터베이스와 매치시켰을때 pw가 똑같아야한다. 결국은 정확한 pw 값을 알아야 문제를 해결할 수 있다. Blind SQL Injection 으로 해결해야한다. 다른 필터링이 없다. Blind SQL Injection을 사용하는 첫걸음을 위한 문제! 이를 해결하기위해 이전 문제에 사용했던 코드를 재활용한다. 문제 해결! 비슷한 유형의 다른 문제 [Lord of SQLInjection] #4 orc 이제 4번 문제!! 이전까지와 다른 점이 있다면 $_GET[pw] = addslashes($_GET[pw]); pw쿼리에 /를 붙..