메인화면입니다.

소스보기입니다.

readme 클릭시 보이는 화면입니다.

'hi~' 클릭시 보이는 화면입니다.

하이퍼링크 클릭시 "?read=admin", "?read=guest"로 넘어가는 것을 확인하여 SQL인젝션을 해보았으나 아무런 반응이 없었습니다.

search 를 이용해야 할 것 같습니다.

search에 문자를 대입해보겠습니다.

['hello~' 입력]

guest의 정보가 나오네요 ~

['a' 입력]

admin의 정보가 나왔네요 ~

['~' 입력]

'~' 입력시 guest의 정보가 나왔습니다.

이를 토대로 유추해보면 search는 subject의 내용에서 like검색을 하는 것 같습니다.

like 검색은 '%, _ '는 와일드카드로 사용합니다.

'%'는 포함하는 문자를 의미하며 '_' 는 임의의 한 문자를 의미합니다.

먼저 와일드 카드를 이용하여 readme의 내용이 몇 글자인지 확인해 보겠습니다.

['_' x 44개]

['_' x 45개]

내용은 총 44문자로 이루어져 있네요 ~

이제 guest와 admin에서 총 사용하는 문자를 구해보았습니다.

'{', '}' 가 들어가는 것으로 보아 flag{} 형식으로 내용이 적혀있을 것 같습니다.

'flag{' 를 앞에 문자로 두고 뒤의 문자를 통해 반응을 살펴보면 될 것 같습니다.

'%'가 들어가면 "like '%%문자열'" 같이 되기 때문에 '%'는 일반문자'%'가 되어 원하는 결과를 얻을 수 없으므로 '%'는 제외하고 검색해야합니다.

이제 추출해보면!

이와 같은 결과를 얻을 수 있습니다.

앞서 확인한 총 44개의 문자열로 구성되어 있습니다.

여기서 마지막 '_'문자를 '}'로 바꾸어주고 인증을 하면 됩니다.

이유는 '_'의 경우 0x5f로 '}' 0x7d보다 먼저 검색되기 때문에 와일드 카드로서의 열할을 하게 됩니다.

'flag{' 뒤의 문자가 모두 대문자인 이유도 위와 마찬가지로 대문자는 0x41 ~ 0x5a 의 범위를 가지게 되기 때문에 대문자가 먼저 검색된 후 만약 문자를 찾이 못하면 이후 '_' 0x5f가 검색되기 때문입니다.

챌린지 56 성공!

소스코드 첨부하겠습니다.

첨부파일
challenge56.py
파일 다운로드

'WAR GAME > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level58 (old)  (2) 2020.04.28
[webhacking.kr] Level57 (old)  (2) 2020.04.28
[webhacking.kr] Level55 (old)  (95) 2020.04.28
[webhacking.kr] Level54 (old)  (2) 2020.04.28
[webhacking.kr] Level53 (old)  (125) 2020.04.28

+ Recent posts