wargame.kr 01 ~ 05
already got
can you see HTTP Response header?
사이트의 헤더값을 볼 수 있는가 물어보는 것 같다.
개발자 도구(f12) 또는 burf suite를 통해 헤더값을 얻어내면 되겠다.
Just click it!
click the button!
i can't catch it!
마우스가 움직임에 따라 click me 도 움직인다.
f12로 확인 결과 움직임이 absoulte position의 위치로 옮겨지는 것을 확인.
그래서 구글에 html absolute를 검색해 봤고 이외에도
static
, relative
등이 있어서 고정된 위치로 옮겨놓고 싶어서 static
으로 변환
QR Code Puzzle
그 퍼즐 맞추기 게임인데 QR코드라서 맞추기가 장난아닐 것 같다.
처음에는 저 블럭 하나하나의 코드에 current값이 있길래 이걸 조정하면 될 것 같았지만
음,, 모두 이 작업을 각 블럭에 하려니 이 문제를 낸 사람은 이걸 원하는 것 같지 않았다.
이 부분을 좀 봤다. 의미심장한 unescape 문구
unescape
함수는 특정 기호를 제외한 문구를 16진수로 바꿔주는 역할을 한다.
이 함수는 쉼표와 세미콜론 같은 문자가 쿠키문자열과의 충돌을 피하기 위해 사용
된다고 한다.
암튼, 저 문구를 console창에 입력해보자
이미지 원본의 주소인가보다. 또 이 웹사이트가 GET형식을 쓰기에 이런 공격이 가능한 것 같다.
원본 QR이 뜨게 되고 QR을 핸드폰으로 접속하여 핸드폰으로
wargame.kr에 플래그값을 입력해야하나보다. 처음에 PC로 플래그값을 받아서 했더니 안되던데 아마 키 생성시 세션값을 디바이스별로 다르게 받는 것 같다.
login filtering
id와 ps를 받아서 SQL 쿼리로 처리하여 만약 id가 guest이거나 blueh4g이면 계정이 잠겼다는 메시지가 뜰거라고 합니다.
실제로 guest / guest 입력시 your account is blocked
를 출력합니다.
처음에는 엄청 많은 삽질을 합니다.
패스워드가 쿼리문으로 넘겨질 때 md5로 인코딩되어 php 전송이 이루어지는 것을 보아 복호화해볼까 생각도 해봤으나 의미 없는 짓이었고 SQL Injection을 사용해볼까 생각했지만 앞에 말했다싶이 md5 인코딩이 되기에 의미가 없어집니다.
SQL 쿼리문은 대소문자를 구별하지 않는다.
따라서 guest와 Guest는 SQL 문에서 같은 문장으로 취급한다. 마치 FROM 과 from은 같은 것처럼 말이다.
따라서 Guest / guest 입력을 하니 정상적으로 로그인 되었다.
WTF_CODE
저 소스코드를 받으면 ws파일이 나오고 메모장에 복사하였더니 공백의 뭔가 감춰진게 있다.
공백(whitespace) 디코드(decode)를 검색해봤더니 이런 ws파일이 이런 곳에 많이 쓰이는 듯 했다. 깃허브에서 누가 만들어논 디코더를 활용했더니 플래그값을 얻을 수 있었다.
Uploaded by Notion2Tistory v1.1.0