풀이
이번 Blind SQLi에서는 regex, like를 Filtering한다.
부등호를 이용해 pw의 길이를 먼저 찾아내자.
Query: ?pw=1' or id='admin' and length(pw)=12%23
pw는 12자이다. 이제 길이를 알았으니, 파이썬을 이용해 pw값을 알아내자.
라고.. 생각했는데 뭔가 이상하다. 값이 하나같이 전부 0으로 나온다.
혹시나 하고, substr(pw,1,1)의 길이를 확인해봤다.
Query: ?pw=1' or id="admin" and length(substr(pw,1,1))=4%23 -> True
??? UTF-8이라면 1이어야 정상인데 4가 참이란다..
다른 값도 확인해보니 2, 3도 4byte이고, 나머지는 값이 없었다.
4byte * 3 = 12이므로, length(pw)가 12가 나온 것이었다.
이제는 수작업을 통해, 1, 2, 3번째를 정수로 바꾼 값을 대충 추론해보자.
다음 Query문을 이용해, 어디 사이에 위치해 있는지 추론할 수 있다.
Query: ?pw=1' or id="admin" and ord(substr(pw,1,1))>50000%23
이렇게 계속 추론해나가자.
대충 값이 줄어들면 이제는 파이썬을 이용해 pw값을 알아내자.
이제 우리가 알아볼 수 있는 문자로 변환하자.
'Wargame > LOS' 카테고리의 다른 글
[LOS] succubus 풀이 (st.16) (0) | 2020.05.29 |
---|---|
[LOS] bugbear 풀이 (st.13) (0) | 2020.05.29 |
[LOS] orc 풀이 (st.4) (0) | 2020.05.29 |
[LOS] cobolt 풀이 (st.2) (0) | 2020.05.28 |
[LOS] goblin 풀이 (st.3) (0) | 2020.05.28 |