ㅎㅇ
코드를 보니깐 Helllo admin이 나오면 참인 것을 이용하여 pw를 알아내는
Blind SQL Injection 문제인 것 같다.
먼저 pw의 길이를 알아내기 위해서
?pw=a' or 1=1 or length(pw)<'10
이런식으로 쿼리를 작성해
pw가 8자리 인것을 알아내었다.
그리고 이제 substr함수를 이용해서 각각 자리가 무엇인지 알아내야하는데
문자인지 숫자인지 특수문자인지 모르기에
하나하나 하기 귀찮아서 burp suite를 이용하였다.
기본적으로는
?pw=a' or 1=1 or ascii(substr(pw,1,1))='50
이런 쿼리를 바탕으로 Brute force를 하였다.
payload설정과 Match설정 설명은 생략하겠다..ㅎ 귀찮다
그렇게 Start Attack을 하면
이러한 결과를 얻을 수 있다.
(첫번째 자리는 이것을 돌리기전에 하나씩 대입하며 알아내서 제외하고 돌렸다.)
그런데 이상한 점이 막 답이 한자리에는 하나만이 있어야하는데 막 2개씩 존재한다.
그래서 둘 중 앞에 있는 값으로 한
pw = 294d3844
를 넣어보니
? 정답이 아니였다.
그래서 3번째 자리와 5번째 자리의 각각 2개의 답이 큰 차이가 없어서 각각 2번째의 답을 넣은
pw =295d5844
를 넣어보니
???
정답
이거 약간 이상한 것 같다.
이상한거 같아서 직접 쿼리문을 두개의 답으로 넣어보면 둘 다 Hello admin이 나오며 잘된다...
왜이럴까
그리고 pw값만 넣는 것이고 quote를 넣지 않기 때문에 addslashes함수는 그냥 낚시인듯 하다..ㅎ
'C. 웹 > 실습' 카테고리의 다른 글
[LOS] 6번 darkelf (0) | 2017.08.25 |
---|---|
[LOS] 5번 wolfman (0) | 2017.08.03 |
[LOS] 3번 goblin (0) | 2017.08.03 |
[LOS] 2번 cobolt (0) | 2017.08.03 |
[LOS] 1번 gremlin (0) | 2017.08.03 |