IDF-CTF-어렵 지 않 은 js 암호 화 writeup
바로 여기→http://ctf.idf.cn/game/web/28
사고방식:링크 를 누 르 면 창 이 팝 업 됩 니 다.flag 를 입력 하 라 고 요구 합 니 다.F12 를 누 르 면 창 이 암호 화 된 js 코드 로 이 루어 진 것 을 볼 수 있 습 니 다.이 js 코드 를 역장 도구 에 복사 하여 복호화 한 js 코드 를 얻 은 다음 에 그 중의 Unicode 코드 와 Ascii 코드 를 해당 하 는 문자 로 변환 합 니 다.결 과 는 다음 과 같 습 니 다.
<script type = "text/javascript" >
var a = prompt(" flag , !", "");
var b = "f3373e36c677750779f5d04ff7885b3e";
var c = /.+_.+_.+/gi;
var d = 0x0;
var e = a.substr(0x8, 0x5);
if ($.md5(e) == b.replace(/7/ig, ++d).replace(/8/ig, d * 0x2)) {
var f = a.substr(0x0 / d, 0x7);
if (f.substr(0x5, 0x2) == "js" && $.md5(f.substr(0x0 / d, d + 0x3)) == "d0154d5048b5a5eb10ef1646400719f1") {
r = a.substr(0xd);
if (r.charCodeAt(d) - 0x19 == r.charCodeAt(++d) - 0x19 && r.charCodeAt(--d) - 0x19 == r.charCodeAt(--d)) {
var g = String.fromCharCode(0x4f);
g = g.toLowerCase() + g.toLowerCase();
if (r.substr((++d) * 0x3, 0x6) == g.concat("easy") && c.test(a)) {
d = String(0x1) + String(a.length)
}
}
}
};
if (a.substr(0x4, 0x1) != String.fromCharCode(d) || a.substr(0x4, 0x1) == "z") {
alert(" , 。。")
} else {
alert(" !")
}
< /script>
코드 를 분석 한 결과 변수 a 가 우리 가 요구 하 는 flag 임 을 발견 했다.b.replace(/7/ig,+d).replace(/8/ig,d*0x2)를 거 친 후 변 수 는 b 가 f3313e36c 611150119 f5d04ff 1225 b3e 로 변 했 고 md5 를 통 해 복호화 한 후에 jiami 를 얻 었 습 니 다.이것 이 바로 변수 e 의 값 이 고 e=a.substr(0x8,0x5)입 니 다.이때 변수 d=0x 01,d0154d5048b5a5eb10ef 1646400719 f1 은 md5 복호화 를 통 해 wctf,즉 f.substr(0x0,0x4)='wctf',그리고 f.substr(0x5,0x2)=='js',그리고 f=a.substr(0x0,0x7)를 얻 을 수 있 습 니 다.이렇게 하면 변수 a 의 일부분 을 확정 할 수 있 습 니 다.이때 변수 d=0x1,계속 계산 하면 r=a.substr(13),r.charCodeAt(1)=r.charCodeAt(2),r.charCodeAt(1)-0x 19==r.charCodeAt(0)을 얻 을 수 있 고 세 위치의 대수 관 계 를 얻 을 수 있 습 니 다.이때 변수 d=0x0,g='oo',r.substr(3,6)='ooeasy',c.test(a)에서'진짜'로 flag 를 결합 하면 일반적으로'wctf{...}'의 형식 으로 변 수 를 초보 적 으로 추측 할 수 있 습 니 다 a='wctf{jsjiami_xxooeasy}’。d=123 을 계산 하고 마지막 if 문 구 를 검증 하면 정확 한 추측 을 할 수 있 으 며 조건 은'축하합니다'로 바 뀌 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.