1. 程式人生 > >BugkuCTF-WEB-WEB4

BugkuCTF-WEB-WEB4

 

看看原始碼就看看原始碼,擷取重要的一部分程式碼,這裡都進行url編碼了,進行解碼

var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));

 

下面是解碼後的程式碼

var p1 = 'function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b';
var p2 = 'aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;';
eval(unescape(p1) + unescape('54aa2' + p2));

 

這裡應該將var p1和var p2連線在一起才能獲得程式碼原來的樣子,下面是連線後的樣子

 

function checkSubmit()
{
	var a=document.getElementById("password");
	if("undefined"!=typeof a)
		{if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;
		alert("Error");
		a.focus();
		return!1
		}
}
	document.getElementById("levelQuest").onsubmit=checkSubmit;

 

這樣子看起來舒服多了- -

因為沒有學習過js程式碼,所以這裡查詢資料耗時比較長

  • getElementById() 方法可返回對擁有指定 ID 的第一個物件的引用。

 

 

  • typeof運算子後跟運算元:

    typeof operand
    or
    typeof (operand)
    

    operand 是一個表示式,表示物件或原始值,其型別將被返回

  • 下面是可能返回的型別  

  型別   結果
  Undefined   "undefined"
  Null   "object"(見下文)
  Boolean   "boolean"
  Number   "number"
  String   "string"
  Symbol (ECMAScript 6 新增)   "symbol"
  宿主物件(由JS環境提供)   Implementation-dependent
  函式物件([[Call]] 在ECMA-262條款中實現了)   "function"
  任何其他物件   "object"
  • 來自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof#%E5%8F%82%E6%95%B0

 

 

function checkSubmit()
{
	var a=document.getElementById("password");
        //在這裡引用的是id為password物件中的元素並賦值給a
	if("undefined"!=typeof a)
        //判斷a的型別是否undefined
		{if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;
		alert("Error");
		a.focus();
                //獲得焦點時,改變背景顏色
		return!1
		}
}
	document.getElementById("levelQuest").onsubmit=checkSubmit;
        //獲取id為levelQuest的物件元素,點選submit時執行checkSubmit函式

 

 

分析完程式碼後發現- -,這麼簡單,瞭解到表單的ID值為 levelQuest,輸入框的ID值為password後,通過審查元素將輸入框的ID值修改為password

在輸入框中輸入67d709b2b54aa2aa648cf6e87a7114f1即可獲得flag

 

 

本來早該休息了。發現第一篇帖子給了一篇優秀後,精神抖擻,多謝大佬的支援,我會好好努力的,願可以更進一步

                                                                                                                                      --一隻小白