Javascript注入技巧
更新時(shí)間:2007年06月22日 00:00:00 作者:
作者: kostis90gr
翻譯: 黯魂[S.S.T]
本文已發(fā)表于《黑客防線》6月刊,版權(quán)屬于《黑客防線》及腳本安全小組,轉(zhuǎn)載請(qǐng)保持文章完整性,謝謝 :)
這份指南僅僅是出于報(bào)告目的,如果任何人把它用于違法目的,我不負(fù)責(zé)任.
通過使用javascript注入,用戶不用關(guān)閉網(wǎng)站或者把頁面保存在他的PC上就可以改變網(wǎng)站中的內(nèi)容.這是由他的瀏覽器的地址欄完成的.
命令的語法看上去像這樣:
Copy code
javascrit:alert(#command#)
比方說如果你想看到在網(wǎng)站http://www.example.com里面的一個(gè)警告框,那么首先在地址欄輸入U(xiǎn)RL(www.example.com),當(dāng)頁面加載完之后,清空URL并輸入javascrit:alert("Hello World")作為一個(gè)新的URL.這樣將彈出一個(gè)警告框顯示Hello World.可是,一些人會(huì)用這個(gè)技巧改變頁面內(nèi)的幾乎任何內(nèi)容.例如一個(gè)圖片.讓我們設(shè)想有一個(gè)網(wǎng)站的logo圖片.通過查看頁面源代碼(可以使用瀏覽器中的"查看源代碼"做到),我們發(fā)現(xiàn)一句HTML代碼:
Copy code
<IMG Name="hi" src="hello.gif">
得到信息:有一個(gè)圖片被命名為hi,且源文件為hello.gif.我們想要改變它為bye.jpeg并存儲(chǔ)到我們的站點(diǎn)http://www.mysite.com上.所以我們的圖片的完整URL是http://www.mysite.com/bye.jpeg 要使用javascript注入,我們需要在地址欄中輸入:
Copy code
javascript:alert(document.hi.src="[url]http://www.mysite.com/bye.jpeg"[/url])
你將看到一個(gè)提示框說http://www.mysite.com/bye.jpeg,并且在那之后圖片將會(huì)被改變.注意雖然那些變化只是暫時(shí)的!如果你刷新頁面或者再次進(jìn)入,你造成的變化將丟失,因?yàn)槟愀淖兊牟皇欠?wù)器上的站點(diǎn),而是你PC上的.
使用同樣的方法,我們可以查看或改變變量的值.比如我們在網(wǎng)站中找到這樣一些源代碼:
Copy code
<SCRIPT LANGUAGE="JavaScript">
var a="test"
</SCRIPT>
意思是給變量a賦值test.為了查看變量的值,我們將輸入:
Copy code
javascript:alert(a)
然后為了把它從test改為hello,則輸入:
Copy code
javascript:alert(a="hello")
但是javascript注入主要用來改變表單的屬性.下面是我們已有的部分代碼:
Copy code
<form name="format" action="send.php" method="post">
<input type="hidden" name="mail" value="[email]someone@somewhere.com[/email]">
<input type="text" name="name">
<input type="submit" value="submit"></form>
我們想要表單發(fā)送到我們的郵箱,而不是代碼中的郵箱someone@somewhere.com,這個(gè)想法可以被這個(gè)命令完成:
Copy code
javascript:alert(document.format.mail.value="[email]me@hacker.com[/email]")
到現(xiàn)在你已經(jīng)知道我總是按層次來講述,下面我們就從大到小開始:
1)從document開始
2)輸入我們想要改變的對(duì)象名(比如document.hi.src)或者它所屬的屬性并且重新賦值(比如document.format.mail.value)
3)最后結(jié)束于我們想要改變的特征(比如源路徑:document.hi.src,或者變量值:document.format.mail.value)
4)用"."號(hào)分隔單詞.
5)當(dāng)我們想要改變特征值的時(shí)候,使用"="號(hào)和新的特征值.
*注意:當(dāng)新的特征值為字符串時(shí)需要使用雙引號(hào)""括起來(比如:document.format.mail.value="me@hacker.com")如果我們想要把它變?yōu)橐粋€(gè)變量的值,則不需要使用雙引號(hào)"".比如我們想改變變量a的值,使其等于變量b的值,會(huì)輸入javascript:alert(a=b).
但是,大多數(shù)頁面中的屬性都沒有名字,例如:
Copy code
<form action="send.php" method="post">
<input type="hidden" name="mail" value="[email]someone@somewhere.com[/email]">
<input type="text" name="name">
<input type="submit" value="submit"></form>
在這個(gè)代碼中,表單沒有名字.利用上面的所有信息,命令可能看上去像這樣:
Copy code
javascript:alert(document. .mail.value="[email]me@hacker.com[/email]")
在這種情況下我們將不得不計(jì)算所有的表單來發(fā)現(xiàn)這個(gè)表單的序號(hào).我會(huì)用一個(gè)例子來講解:
在以上代碼中我們看見了3個(gè)表單,但是我們只對(duì)第二個(gè)感興趣.因此我們想要的表單序號(hào)就是2.千萬別忘記我們是從1開始計(jì)算的,我們說1,2,3,4...但是在javascript中卻是從0開始計(jì)算的.它是0,1,2,3...所以真正的表單序號(hào)是1,不是2.通常我們要先找到表單序號(hào)再減一.
我們將用這個(gè)序號(hào)來補(bǔ)全我們的命令:
像這樣,你就能改變沒有名字的圖片或者鏈接了.
對(duì)于圖片:
對(duì)于鏈接:
最后,我們可以用這個(gè)技巧編輯cookies.
下面的命令由triviasecurity.net的Dr_aMado所編寫,但是我修改了一點(diǎn)以至于在用戶編輯它之前就能顯示cookie.你只需要復(fù)制它們到地址欄:
作為結(jié)束,我必須強(qiáng)調(diào)我們所做的改變僅僅是在用戶端!就像是把網(wǎng)站保存在了你的PC上,然后修改它.盡管如此,使用這個(gè)技巧你仍然可以欺騙一個(gè)頁面(例如cookies)或者通過一個(gè)頁面的安全驗(yàn)證.例如一些頁面會(huì)檢測用戶從哪發(fā)送的數(shù)據(jù).如果數(shù)據(jù)從http://www.test.com/form.php發(fā)送到http://www.test.com/check.php,check.php可能會(huì)檢測數(shù)據(jù)是否是從http://www.test.com/form.php上的表單發(fā)送的.除此之外,如果你打算登錄一個(gè)頁面中你自己的javascript代碼,通過使用一些像這樣的技巧,你將能夠改變類似不變的圖片!可是你需要用到比這里講到的更深層次的知識(shí).
要是有任何問題和建議,請(qǐng)發(fā)郵件給我:kostis90gr@gmail.com
翻譯: 黯魂[S.S.T]
本文已發(fā)表于《黑客防線》6月刊,版權(quán)屬于《黑客防線》及腳本安全小組,轉(zhuǎn)載請(qǐng)保持文章完整性,謝謝 :)
這份指南僅僅是出于報(bào)告目的,如果任何人把它用于違法目的,我不負(fù)責(zé)任.
通過使用javascript注入,用戶不用關(guān)閉網(wǎng)站或者把頁面保存在他的PC上就可以改變網(wǎng)站中的內(nèi)容.這是由他的瀏覽器的地址欄完成的.
命令的語法看上去像這樣:
Copy code
javascrit:alert(#command#)
比方說如果你想看到在網(wǎng)站http://www.example.com里面的一個(gè)警告框,那么首先在地址欄輸入U(xiǎn)RL(www.example.com),當(dāng)頁面加載完之后,清空URL并輸入javascrit:alert("Hello World")作為一個(gè)新的URL.這樣將彈出一個(gè)警告框顯示Hello World.可是,一些人會(huì)用這個(gè)技巧改變頁面內(nèi)的幾乎任何內(nèi)容.例如一個(gè)圖片.讓我們設(shè)想有一個(gè)網(wǎng)站的logo圖片.通過查看頁面源代碼(可以使用瀏覽器中的"查看源代碼"做到),我們發(fā)現(xiàn)一句HTML代碼:
Copy code
<IMG Name="hi" src="hello.gif">
得到信息:有一個(gè)圖片被命名為hi,且源文件為hello.gif.我們想要改變它為bye.jpeg并存儲(chǔ)到我們的站點(diǎn)http://www.mysite.com上.所以我們的圖片的完整URL是http://www.mysite.com/bye.jpeg 要使用javascript注入,我們需要在地址欄中輸入:
Copy code
javascript:alert(document.hi.src="[url]http://www.mysite.com/bye.jpeg"[/url])
你將看到一個(gè)提示框說http://www.mysite.com/bye.jpeg,并且在那之后圖片將會(huì)被改變.注意雖然那些變化只是暫時(shí)的!如果你刷新頁面或者再次進(jìn)入,你造成的變化將丟失,因?yàn)槟愀淖兊牟皇欠?wù)器上的站點(diǎn),而是你PC上的.
使用同樣的方法,我們可以查看或改變變量的值.比如我們在網(wǎng)站中找到這樣一些源代碼:
Copy code
<SCRIPT LANGUAGE="JavaScript">
var a="test"
</SCRIPT>
意思是給變量a賦值test.為了查看變量的值,我們將輸入:
Copy code
javascript:alert(a)
然后為了把它從test改為hello,則輸入:
Copy code
javascript:alert(a="hello")
但是javascript注入主要用來改變表單的屬性.下面是我們已有的部分代碼:
Copy code
<form name="format" action="send.php" method="post">
<input type="hidden" name="mail" value="[email]someone@somewhere.com[/email]">
<input type="text" name="name">
<input type="submit" value="submit"></form>
我們想要表單發(fā)送到我們的郵箱,而不是代碼中的郵箱someone@somewhere.com,這個(gè)想法可以被這個(gè)命令完成:
Copy code
javascript:alert(document.format.mail.value="[email]me@hacker.com[/email]")
到現(xiàn)在你已經(jīng)知道我總是按層次來講述,下面我們就從大到小開始:
1)從document開始
2)輸入我們想要改變的對(duì)象名(比如document.hi.src)或者它所屬的屬性并且重新賦值(比如document.format.mail.value)
3)最后結(jié)束于我們想要改變的特征(比如源路徑:document.hi.src,或者變量值:document.format.mail.value)
4)用"."號(hào)分隔單詞.
5)當(dāng)我們想要改變特征值的時(shí)候,使用"="號(hào)和新的特征值.
*注意:當(dāng)新的特征值為字符串時(shí)需要使用雙引號(hào)""括起來(比如:document.format.mail.value="me@hacker.com")如果我們想要把它變?yōu)橐粋€(gè)變量的值,則不需要使用雙引號(hào)"".比如我們想改變變量a的值,使其等于變量b的值,會(huì)輸入javascript:alert(a=b).
但是,大多數(shù)頁面中的屬性都沒有名字,例如:
Copy code
<form action="send.php" method="post">
<input type="hidden" name="mail" value="[email]someone@somewhere.com[/email]">
<input type="text" name="name">
<input type="submit" value="submit"></form>
在這個(gè)代碼中,表單沒有名字.利用上面的所有信息,命令可能看上去像這樣:
Copy code
javascript:alert(document. .mail.value="[email]me@hacker.com[/email]")
在這種情況下我們將不得不計(jì)算所有的表單來發(fā)現(xiàn)這個(gè)表單的序號(hào).我會(huì)用一個(gè)例子來講解:
復(fù)制代碼 代碼如下:
<form action="send.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit"></form>
<form action="send.php" method="post">
<input type="hidden" name="mail" value="someone@somewhere.com">
<input type="text" name="name">
<input type="submit" value="submit"></form>
<form action="send.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit"></form>
<input type="text" name="name">
<input type="submit" value="submit"></form>
<form action="send.php" method="post">
<input type="hidden" name="mail" value="someone@somewhere.com">
<input type="text" name="name">
<input type="submit" value="submit"></form>
<form action="send.php" method="post">
<input type="text" name="name">
<input type="submit" value="submit"></form>
在以上代碼中我們看見了3個(gè)表單,但是我們只對(duì)第二個(gè)感興趣.因此我們想要的表單序號(hào)就是2.千萬別忘記我們是從1開始計(jì)算的,我們說1,2,3,4...但是在javascript中卻是從0開始計(jì)算的.它是0,1,2,3...所以真正的表單序號(hào)是1,不是2.通常我們要先找到表單序號(hào)再減一.
我們將用這個(gè)序號(hào)來補(bǔ)全我們的命令:
復(fù)制代碼 代碼如下:
javascript:alert(document.forms[1].mail.value="me@hacker.com")
像這樣,你就能改變沒有名字的圖片或者鏈接了.
對(duì)于圖片:
復(fù)制代碼 代碼如下:
javascript:alert(document.images[3].src="#你想改變的目標(biāo)圖片URL#")
對(duì)于鏈接:
復(fù)制代碼 代碼如下:
javascript:alert(document.links[0].)
最后,我們可以用這個(gè)技巧編輯cookies.
下面的命令由triviasecurity.net的Dr_aMado所編寫,但是我修改了一點(diǎn)以至于在用戶編輯它之前就能顯示cookie.你只需要復(fù)制它們到地址欄:
復(fù)制代碼 代碼如下:
javascript:alert(window.c=functiona(n,v,nv){c=document.cookie;c=c.substring(c.indexOf(n)+n.length,c.length);c=c.substring(1,((c.indexOf(";")>-1)?c.indexOf(";") :c.length));nc=unescape(c).replace(v,nv);document.cookie=n+"="+escape(nc);return unescape(document.cookie);});alert('The cookie is: "'+document.cookie+'"');alert(c(prompt("The name of the cookie:",""),prompt("Change this value:",""),prompt("with this:","")));
作為結(jié)束,我必須強(qiáng)調(diào)我們所做的改變僅僅是在用戶端!就像是把網(wǎng)站保存在了你的PC上,然后修改它.盡管如此,使用這個(gè)技巧你仍然可以欺騙一個(gè)頁面(例如cookies)或者通過一個(gè)頁面的安全驗(yàn)證.例如一些頁面會(huì)檢測用戶從哪發(fā)送的數(shù)據(jù).如果數(shù)據(jù)從http://www.test.com/form.php發(fā)送到http://www.test.com/check.php,check.php可能會(huì)檢測數(shù)據(jù)是否是從http://www.test.com/form.php上的表單發(fā)送的.除此之外,如果你打算登錄一個(gè)頁面中你自己的javascript代碼,通過使用一些像這樣的技巧,你將能夠改變類似不變的圖片!可是你需要用到比這里講到的更深層次的知識(shí).
要是有任何問題和建議,請(qǐng)發(fā)郵件給我:kostis90gr@gmail.com
相關(guān)文章
event.currentTarget與event.target的區(qū)別介紹
event.currentTarget與event.target的區(qū)別想大家在使用的時(shí)候不是很在意,本文以測試代碼來講解它門之間的不同2012-12-12中高級(jí)前端必須了解的JS中的內(nèi)存管理(推薦)
這篇文章主要介紹了中高級(jí)前端必須了解的JS中的內(nèi)存管理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07JavaScript學(xué)習(xí)教程之cookie與webstorage
這篇文章主要給大家介紹了關(guān)于JavaScript學(xué)習(xí)教程之cookie與webstorage的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06JavaScript Base64編碼和解碼,實(shí)現(xiàn)URL參數(shù)傳遞。
JavaScript Base64編碼和解碼,實(shí)現(xiàn)URL參數(shù)傳遞。...2006-09-09JavaScript 中文轉(zhuǎn)拼音實(shí)現(xiàn)代碼 有些bug
在做項(xiàng)目時(shí)候遇到一個(gè)小小的顯示客戶部門名稱(拼音)的業(yè)務(wù),就是在部門名稱下有相應(yīng)的拼音,而在現(xiàn)有的數(shù)據(jù)庫中沒有相應(yīng)字段,并且部門數(shù)量比較多,添加起來比較費(fèi)時(shí),就想能否在js中實(shí)現(xiàn),在頁面中處理。2010-03-03layui數(shù)據(jù)表格 table.render 報(bào)錯(cuò)的解決方法
今天小編就為大家分享一篇layui數(shù)據(jù)表格 table.render 報(bào)錯(cuò)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09