김승현
[PicoGym] picoCTF Client-side-again 풀이 본문
그냥 플래그를 찾는 문제인 것 같다.
난독화란 무엇인가라는 힌트가 있고 아마 난독화된 내용을 해독하면 되는 것 같다.
일단 접속해보자.
접속해보면 대충 이런 화면이 나온다. 난독화 내용이 나왔으니까 소스코드 확인부터 해보자.
자바스크립트로 난독화가 된 것 같은 내용이 있었다.
<script type="text/javascript">
var _0x5a46=['0a029}','_again_5','this','Password\x20Verified','Incorrect\x20password','getElementById','value','substring','picoCTF{','not_this'];(function(_0x4bd822,_0x2bd6f7){var _0xb4bdb3=function(_0x1d68f6){while(--_0x1d68f6){_0x4bd822['push'](_0x4bd822['shift']());}};_0xb4bdb3(++_0x2bd6f7);}(_0x5a46,0x1b3));var _0x4b5b=function(_0x2d8f05,_0x4b81bb){_0x2d8f05=_0x2d8f05-0x0;var _0x4d74cb=_0x5a46[_0x2d8f05];return _0x4d74cb;};function verify(){checkpass=document[_0x4b5b('0x0')]('pass')[_0x4b5b('0x1')];split=0x4;if(checkpass[_0x4b5b('0x2')](0x0,split*0x2)==_0x4b5b('0x3')){if(checkpass[_0x4b5b('0x2')](0x7,0x9)=='{n'){if(checkpass[_0x4b5b('0x2')](split*0x2,split*0x2*0x2)==_0x4b5b('0x4')){if(checkpass[_0x4b5b('0x2')](0x3,0x6)=='oCT'){if(checkpass[_0x4b5b('0x2')](split*0x3*0x2,split*0x4*0x2)==_0x4b5b('0x5')){if(checkpass['substring'](0x6,0xb)=='F{not'){if(checkpass[_0x4b5b('0x2')](split*0x2*0x2,split*0x3*0x2)==_0x4b5b('0x6')){if(checkpass[_0x4b5b('0x2')](0xc,0x10)==_0x4b5b('0x7')){alert(_0x4b5b('0x8'));}}}}}}}}else{alert(_0x4b5b('0x9'));}}
</script>
그냥 1자로 쭉 적혀있는데 자바스크립트를 예쁘게 고쳐주는 사이트가 있다.
Online JavaScript beautifier
위의 사이트로 이동해서 고쳐보자.
이런 식으로 코드가 나왔다.
개발자도구 - console을 통해 해석해보자.
순서를 잘 맞추면 아래의 flag가 나온다.
picoCTF{not_this_again_50a029}
끝
근데 웹사이트에 있는 이건 왜 있는 거지,,? flag를 입력해도 딱히 변하는 게 없는데
'Web > PicoGym' 카테고리의 다른 글
[PicoGym] picoCTF GET aHEAD 풀이 (0) | 2023.05.23 |
---|---|
[PicoGym] picoCTF JAuth 풀이 (0) | 2023.05.23 |
[PicoGym] picoCTF Roboto Sans 풀이 (0) | 2023.05.23 |
[PicoGym] picoCTF Irish-Name-Repo 3 풀이 (0) | 2023.05.23 |
[PicoGym] picoCTF Irish-Name-Repo 2 풀이 (0) | 2023.05.23 |