Blind SQL Injection
-
[CrackUs] LEVEL 19[+] Security [+]/CrackUs 2020. 7. 20. 22:46
19번 문제! 더보기 이번 문제는 쿼리로 no를 입력받는 문제다. play_sql19번 테이블은 계정이 1번부터 30번까지 총 30개 있는듯 하다. if( '인젝션 쿼리' , no=1,1) 로 Blind SQL Injeciton 을 수행할 수 있을 듯 하다. 테이블에 pw길이가 9 인 계정이 있음은 자명하다. 다만... 그게 어떤 계정인지 불확실 하다. 아마 lengh(pw)가 9인 계정을 여러개 파놓을 수도 있다. 선배님께서 말씀하신 함정이 이게 아닐까 싶다. 그렇다면 length(pw)가 9 인 계정을 정확히 짚고 Blind SQL Injection을 가할 필요가 있다. 이로서 no = 1 의 length(pw)가 9 임을 정확히 알았다. 이제는 이전까지 해왔던 방법과 동일하다. 가즈아! 하지만 길이..
-
[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 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 함수를 포함하고 있어서 비밀번호 각각의 값을 알 ..