picoCTFにチャレンジ_no2

Web Exploitation JavaScrypt 40Point

 

該当WebページをChromeの開発ツールでソースコードを確認。

var key; // Global variable.

// Since the key is generated when the page // is loaded, no one will be able to steal it // by looking at the source! This must be secure!

function generateKey() {

var i = 1;

var x = 298;

var n = 5493;

while (i <= 25) { x = (x * i) % n; i++; }

key = "flag_" + Math.abs(x); }

generateKey();

// Encode the message using the 'key'

function encode() {

var input = $("#inputmessage").val();

var output = CryptoJS.AES.encrypt(input, key);

$("#outputmessage").val(output); }

上記のJavaScryptoを実行すればFlagが獲得できそうなことは判明したため、

下記の情報を参考にしながらJavaファイルを作成。ファイル名とClass名が異なっていたため、コンパイルエラーが発生したが、その点を修正し、 #javac Javascrypt.javaコンパイルを通し、 java Javascrypt にてFlagをGET。地道に努力してプログラムスキルを向上させないと・・・ 答えを見ながら試行錯誤しているがとても勉強になる!

(参考)URL

http://lynkos420.blogspot.jp/2014/11/javascrypt-40.html