Some Assembly Required 1

HackBeom·2022년 10월 24일
0

picoCTF_WriteUp

목록 보기
5/18


메인페이지를 보게 되면 올바른 플래그를 입력하라고 나온다.

다양한 시도를 해봤지만 전부 실패 페이지 소스 보기(ctrl + u)를 하면

해당 소스코드가 나오는데 G82XCw5CX3.js 파일이 수상해 보인다. 들어가보자

js 같은데 보기 힘들게 압축(?) 되어 있다.
이럴 때는 http://jsnice.org/ 사이트를 이용하여 코드를 보자

해당 사이트고 아까 본 코드를 복사해서 집어넣으면


위와 같이 코드가 보기 쉽게 바뀐다.


'use strict';
const _0x402c = ["value", "2wfTpTR", "instantiate", "275341bEPcme", "innerHTML", "1195047NznhZg", "1qfevql", "input", "1699808QuoWhA", "Correct!", "check_flag", "Incorrect!", "./JIFxzHyW8W", "23SMpAuA", "802698XOMSrr", "charCodeAt", "474547vVoGDO", "getElementById", "instance", "copy_char", "43591XxcWUl", "504454llVtzW", "arrayBuffer", "2NIQmVj", "result"];
const _0x4e0e = function(url, whensCollection) {
  /** @type {number} */
  url = url - 470;
  let _0x402c6f = _0x402c[url];
  return _0x402c6f;
};
(function(data, oldPassword) {
  const toMonths = _0x4e0e;
  for (; !![];) {
    try {
      const userPsd = -parseInt(toMonths(491)) + parseInt(toMonths(493)) + -parseInt(toMonths(475)) * -parseInt(toMonths(473)) + -parseInt(toMonths(482)) * -parseInt(toMonths(483)) + -parseInt(toMonths(478)) * parseInt(toMonths(480)) + parseInt(toMonths(472)) * parseInt(toMonths(490)) + -parseInt(toMonths(485));
      if (userPsd === oldPassword) {
        break;
      } else {
        data["push"](data["shift"]());
      }
    } catch (_0x41d31a) {
      data["push"](data["shift"]());
    }
  }
})(_0x402c, 627907);
let exports;
(async() => {
  const findMiddlePosition = _0x4e0e;
  let leftBranch = await fetch(findMiddlePosition(489));
  let rightBranch = await WebAssembly[findMiddlePosition(479)](await leftBranch[findMiddlePosition(474)]());
  let module = rightBranch[findMiddlePosition(470)];
  exports = module["exports"];
})();
/**
 * @return {undefined}
 */
function onButtonPress() {
  const navigatePop = _0x4e0e;
  let params = document["getElementById"](navigatePop(484))[navigatePop(477)];
  for (let i = 0; i < params["length"]; i++) {
    exports[navigatePop(471)](params[navigatePop(492)](i), i);
  }
  exports["copy_char"](0, params["length"]);
  if (exports[navigatePop(487)]() == 1) {
    document[navigatePop(494)](navigatePop(476))[navigatePop(481)] = navigatePop(486);
  } else {
    document[navigatePop(494)](navigatePop(476))[navigatePop(481)] = navigatePop(488);
  }
}
;

해당 코드들 중에 ./JIFxzHyW8W 파일이 수상해보인다. 주소창에 넣어보자

파일이 다운로드 되고 해당 파일을 HxD를 이용하여 열어보면

picoCTF{c733fda95299a16681f37b3ff09f901c} 플래그값 발견
메인페이지에 해당 값을 넣게 되면

정답이다.

0개의 댓글