메인화면입니다.

마우스를 움직이면 이미지가 움직이네요 ~

메인화면 소스보기입니다.

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

rank 페이지 소스보기입니다.

여기서 힌트를 얻을 수 있는데 맨 마지막줄을 보면 아래와 같습니다.

<code>mysqli_query($db,"insert into chall55 values('{$_SESSION['id']}','".trim($_POST['score'])."','{$flag}')");</code>

세션id, score, flag를 저장하네요 ~

그럼 어떤 컬럼을 사용하는지 확인해봅시다.

스코어를 클릭하면 상단에 id와 점수가 표시됩니다.

파라미터는 ?score=2147483647 이네요 ~

이 부분에 procedure analyse() 함수를 사용하여 컬럼정보를 확인해보겠습니다.

[첫번째 컬럼]

첫번째 컬럼은 id입니다.

[두번째 컬럼]

두번째 컬럼은 score입니다.

[세번째 컬럼]

세번째 컬럼은 p4ssw0rd_1123581321 입니다.

컬럼명을 확인했으니 p4ssw0rd_1123581321컬럼의 값을 뽑아보겠습니다.

먼저 필터링이 되는 문자들을 확인해보니 아래와 같았습니다.

[필터링 문자]

'(싱글쿼터), "(더블쿼터), char, substr, mid

이를 우회 하여 컬럼의 첫번째 문자를 확인하는 쿼리를 만들어보면 아래와 같습니다.

[인젝션 쿼리 예시]

rank.php?score=if(right(left(p4ssw0rd_1123581321,1),1)=0x97,1,0)#

위 쿼리는 4ssw0rd_1123581321컬럼의 값의 첫번째 문자가 소문자 'a'인지 확인하여 참이면 score에 1을 거짓이면 0을 넣는 쿼리입니다.

[score가 1일 경우]

score가 1일 경우 "jso109817" 이 표시됩니다.

[score가 0일 경우]

상단에 아무것도 표시되지 않습니다.

이러한 정보를 확인하여 파이썬으로 코드를 만들어 돌리면 아래와 같이 플래그를 획득할 수 있습니다.

FLAG이후 부분을 소문자로 바꾸어 인증을 하면!

FLAG{easy_peasy_lemon_squeezy!}

챌린지 55 성공!

파이썬 소스코드도 첨부하겠습니다.

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

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

[webhacking.kr] Level57 (old)  (2) 2020.04.28
[webhacking.kr] Level56 (old)  (7) 2020.04.28
[webhacking.kr] Level54 (old)  (2) 2020.04.28
[webhacking.kr] Level53 (old)  (125) 2020.04.28
[webhacking.kr] Level52 (old)  (173) 2020.04.28

+ Recent posts