White Security
neverlanctf 2019 - Console writeup 본문
neverlanctf의 console 문제입니다.
링크가 하나 주어지네요.
접속하면 화면에 단일 폼이 하나 등장하고
콘솔이라는 걸 알리고 싶었는지
좌측에 '>' 이 하나 붙어있습니다.
var foo = document.getElementById("p"); function what(){ var input = document.getElementById("pass").value; if( md5(input) == "7b1ece53a46f4a5a2995b9cf901bf457" ){ getThat('Y'); }else{getThat('N')} } function getThat(strg){ if(strg == 'Y'){ // Note: There is no data sent to the key.php file... // jquery ajax reference: https://api.jquery.com/jQuery.ajax/ $.ajax({ type: 'GET', url: '1/key.php', success: function (file_html) { // success foo.innerHTML=(file_html) } }); }else{ foo.innerHTML = "Nope, try again"; } }
곧바로 소스를 확인해 보면
입력한 값을 md5 해싱하고
하드코딩 해둔 값과 비교하여 같으면
jQuery 의 Ajax로 1/key.php에 요청을 보내고 있습니다.
그럼 1/key.php 페이지에 접속해 볼까요?
이게 어떻게 된 일일까요.
분명 메인페이지에서는 비교에 성공하면
위 페이지를 가져오도록 되어 있었는데
막상 접속하니 되돌아가랍니다.
이유는 일반 페이지를 요청했을때와
자바스크립트를 통해 페이지를 요청했을때
차이점이 존재할 수 있기 때문입니다.
자바스크립트에서 서버 내에 있는
타 페이지 데이터를 요청할 때에
XMLHttpRequest 객체를 사용하게 되는데요.
Referer: https://challenges.neverlanctf.com:1120/console.html X-Request-With: XMLHttpRequest
그 때엔 추가로 추가적으로
Referer와 X-Request-With 헤더가 붙게되니
XMLHttpRequest를 통한 요청과 완벽히
동일하게 만들고 싶다면
참고하시면 되겠습니다.
'CTF Writups' 카테고리의 다른 글
neverlanctf 2019 - Dirty Validate writeup (0) | 2019.02.04 |
---|---|
neverlanctf 2019 - Das Blog 2 writeup (0) | 2019.02.04 |
neverlanctf 2019 - Das Blog writeup (0) | 2019.02.04 |
neverlanctf 2019 - Cover the BASEs writeup (0) | 2019.02.04 |
neverlanctf 2019 - Cookie monster writeup (0) | 2019.02.04 |
Comments