[+] Security [+]
-
[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쿼리에 /를 붙..
-
[CrackUs] LEVEL 10[+] Security [+]/CrackUs 2020. 7. 17. 17:59
LEVEL 10 오렌지 문제! 코드를 살펴보자. 예상했던 대로 Blind SQL Injection 문제다. 우선 인자로 idx ch pw 세가지를 받는다. is_numeric 함수는 값이 숫자로만 이루어 졌는지 체크한다. 앞에 ! 가 있으니 숫자로만 이루어져 있지 않다면 False를 반환한다. isset함수는 변수에 값이 들어있는지를 체크한다. 이 역시도 값이 들어있지 않다면 exit 된다. 또한 idx 변수에는 0x 즉 헥사값을 사용하는 것을 막아놓았고, ch의 길이가 1 이상이어야 한다. 아래의 주석은 비밀번호의 길이를 알려준다. 친절하신 출제자님! 좀더 아래를 보면 흥미로운 것이 있다. 쿼리가 두개로 이루어져있다. 첫번째 쿼리는 그 안에 substr 함수를 포함하고 있어서 비밀번호 각각의 값을 알 ..
-
[CrackUs] LEVEL 9[+] Security [+]/CrackUs 2020. 7. 17. 15:36
레벨 9 사과문제! 코드를 살펴보자. 이번문제부터는 쿼리에 등호가 아닌 부등호를 사용한다. 즉 length(pw)의 길이를 알아내는 것이 우선인듯 하다. 또한 if($len == strlen($result['pw']) && $len != 0) 이 부분을 보아 num 인자를 받아 길이를 알아내고 len 을 통해 정확한 비밀번호 길이를 넘겨주면 통과할 수 있는 문제다. 교재에서 이 문제는 Blind SQL Injection 을 들어가기 앞서 개념확인 문제 정도로 쓰인다. 즉 개념을 잘 알고 숙지했다면 쉽게 해결할 수 있다! 비밀번호의 길이가 6보다 크고 && 7보다 크진 않다.
-
[CrackUs] LEVEL 8[+] Security [+]/CrackUs 2020. 7. 17. 15:24
다음 8번 문제! 코드를 살펴보자. 우선 쿼리를 살펴보면 id를 받지 않는다. 하지만 id 값이 admin 이어야 통과할 수 있다. 필터링 되어있는 것을 살펴보면 공백을 막아놓았다. 즉 묻는 것은 자명하다. 공백을 우회하고 id = admin 쿼리를 추가로 생성하라! %0a : Line Feed (\n) %0b, %0c %0d : carracarriage return (\r) %09 : Tap 을 이용하여 공백을 대체할 수 있다. 비슷한 유형의 다른 문제 [Lord of SQLInjection] #5 wolfman 드디어 5번 문제! if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 절을 보아 공백을 필터링해놓은 듯하다! 즉! 공백우회 문제! 해..