一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

淺談javascript函數(shù)劫持[轉(zhuǎn)自xfocus]第1/3頁(yè)

一、概述
Javascript函數(shù)劫持,也就是老外提到的Javascript hijacking技術(shù)。最早還是和劍心同學(xué)討論問(wèn)題時(shí)偶然看到的一段代碼,大概這樣寫的:
window.alert = function(s) {};
覺(jué)得這種用法很巧妙新穎,和API Hook異曲同工,索性稱之為Javascript function hook,也就是函數(shù)劫持。通過(guò)替換js函數(shù)的實(shí)現(xiàn)來(lái)達(dá)到劫持這個(gè)函數(shù)調(diào)用的目的,一個(gè)完整的hook alert函數(shù)例子如下:
<!--1.htm-->
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
<!--
var _alert = alert;
window.alert = function(s) {
if (confirm("是否要彈框框,內(nèi)容是/"" + s + "/"?")) {
_alert(s);
}
}
//-->
</script>
<html>
<body>
<input type="button" onclick="Javascript: alert('Hello World!')" value="test" />
</body>
</html>

搞過(guò)API Hook的同學(xué)們看到這個(gè)代碼一定會(huì)心的一笑,先保存原函數(shù)實(shí)現(xiàn),然后替換為我們自己的函數(shù)實(shí)現(xiàn),添加我們自己的處理邏輯后最終再調(diào)用原來(lái)的函數(shù)實(shí)現(xiàn),這樣這個(gè)alert函數(shù)就被我們劫持了。原理非常簡(jiǎn)單,下面舉些典型的應(yīng)用來(lái)看看我們能利用它來(lái)做些什么。
二、應(yīng)用舉例
1. 實(shí)現(xiàn)一個(gè)簡(jiǎn)易的Javascript debugger,這里說(shuō)是debugger比較標(biāo)題黨,其實(shí)只是有點(diǎn)類似于debugger的功能,主要利用js函數(shù)劫持來(lái)實(shí)現(xiàn)函數(shù)的break point,來(lái)看看個(gè)簡(jiǎn)單的例子:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
<!--
var _eval = eval;
eval = function(s) {
if (confirm("eval被調(diào)用/n/n調(diào)用函數(shù)/n" + eval.caller + "/n/n調(diào)用參數(shù)/n" + s)) {
_eval(s);
}
}
//-->
</script>
<html>
<head>
</head>
<body>
<script type="text/Javascript">
<!--
function test() {
var a = "alert(1)";
eval(a);
}
function t() {
test();
}
t();
//-->
</script>
</body>
</html>

通過(guò)js函數(shù)劫持中斷函數(shù)執(zhí)行,并顯示參數(shù)和函數(shù)調(diào)用者代碼,來(lái)看一個(gè)完整例子的效果:
>help
debug commands:
bp <function name> - set a breakpoint on a function, e.g. "bp window.alert".
bl - list all breakpoints.
bc <breakpoint number> - remove a breakpoint by specified number, e.g. "bc 0".
help - help information.
>bp window.alert
* breakpoint on function "window.alert" added successfully.
>bl
* 1 breakpoints:
0 - window.alert
>bc 0
* breakpoint on function "window.alert" deleted successfully.
這里演示設(shè)置斷點(diǎn),察看斷點(diǎn)和刪除斷點(diǎn),完整代碼在本文附錄[1]給出。
2. 設(shè)置陷阱實(shí)時(shí)捕捉跨站測(cè)試者,搞跨站的人總習(xí)慣用alert來(lái)確認(rèn)是否存在跨站,如果你要監(jiān)控是否有人在測(cè)試你的網(wǎng)站xss的話,可以在你要監(jiān)控的頁(yè)面里hook alert函數(shù),記錄alert調(diào)用情況:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
<!--
function log(s) {
var img = new Image();
img.style.width = img.style.height = 0;
img.src = "http://yousite.com/log.php?caller=" + encodeURIComponent(s);
}
var _alert = alert;
window.alert = function(s) {
log(alert.caller);
_alert(s);
}
//-->
</script>

當(dāng)然,你這個(gè)函數(shù)要加到頁(yè)面的最開始,而且還要比較隱蔽一些,赫赫,你甚至可以使alert不彈框或者彈個(gè)警告框,讓測(cè)試者抓狂一把。
3. 實(shí)現(xiàn)DOM XSS自動(dòng)化掃描,目前一般的XSS自動(dòng)化掃描的方法是從http返回結(jié)果中搜索特征來(lái)確定是否存在漏洞,但是這種方法不適用于掃描DOM XSS,因?yàn)镈OM XSS是由客戶端腳本造成的,比如前段時(shí)間劍心發(fā)現(xiàn)的google的跨站(見附錄[2])原理如下:
document.write(document.location.hash);
這樣的跨站無(wú)法反映在http response里,所以傳統(tǒng)掃描方法沒(méi)法掃描出來(lái)。但是如果你從上個(gè)例子里受到啟發(fā)的話,一定會(huì)想到設(shè)置陷阱的辦法,DOM XSS最終導(dǎo)致alert被執(zhí)行,所以我們hook alert函數(shù)設(shè)置陷阱,如果XSS成功則會(huì)去調(diào)用alert函數(shù),觸發(fā)我們的陷阱記錄結(jié)果,這樣就可以實(shí)現(xiàn)DOM XSS的自動(dòng)化掃描,陷阱代碼類似于上面。
4. 靈活的使用js劫持輔助你的頁(yè)面代碼分析工作,比如分析網(wǎng)頁(yè)木馬時(shí),經(jīng)常會(huì)有通過(guò)eval或者document.write來(lái)進(jìn)行加密的情況,于是我們編寫段hook eval和document.write的小工具,輔助解密:
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
<!--
var _eval = eval;
eval = window.execScript = window.document.write = window.document.writeln = function(s) {
document.getElementById("output").value = s;
}
//-->
</script>
<html>
<body>
input:
<textarea id="input" cols="80" rows="10"></textarea>
<input type="button" onclick="Javascript: _eval(document.getElementById('input').value);" value="decode" />
<br />
output:
<textarea id="output" cols="80" rows="10"></textarea>
</body>
</html>

在input框里輸入加密的代碼:
eval(unescape("%61%6C%65%72%74%28%31%29%3B"));
在output框里輸出解碼后的代碼:
alert(1);
當(dāng)然你還能想到更多的靈活應(yīng)用:)

JavaScript技術(shù)淺談javascript函數(shù)劫持[轉(zhuǎn)自xfocus]第1/3頁(yè),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩久久中文字幕 | 久久国产乱子伦精品免费看 | 亚洲精品国产专区91在线 | 六月婷婷中文字幕 | 日本无吗免费一二区 | 国产视频一区二区在线观看 | 夜夜综合| 亚洲综合色色图 | 亚洲精品美女久久久久网站 | 韩国一级毛片视频免费观看 | 天天色天天爱 | 久久人人干 | 色诱久久av| 激情综合网五月天 | 欧美黑人巨大xxxxx视频 | 加勒比高清 | 久久久久99 | 婷婷5月| 精品香蕉一区二区三区 | 9ⅰ视频在线播放 | 草草线在成人免费视频 | 亚洲欧美成人综合久久久 | 美女网站一区二区三区 | 91av福利| 色www亚洲 | 亚洲人成一区二区三区 | 国产婷婷色综合成人精品 | 久久六月丁香婷婷婷 | 国产熟睡乱子伦视频 | 狠狠久久久久久亚洲综合网 | 国产精品成人第一区 | 四川农村女人一级毛片 | 久久精品免视国产 | 精品久久久久久久久久中文字幕 | 日本欧美高清视频 | 国产精品亚洲一区二区三区在线观看 | 午夜免费视频观看 | 中文字幕在线视频第一页 | 久热爱精品视频在线观看久爱 | 黄片毛片在线观看 | 毛片特黄|