再談javascript注入 黑客必備!
什么是javascript注入攻擊?
1、JavaScript注入就是在瀏覽器地址欄中輸入一段js代碼,用來(lái)改變頁(yè)面js變量、頁(yè)面標(biāo)簽的內(nèi)容。
使用Javascript注入,用戶不需要關(guān)閉或保存網(wǎng)頁(yè)就可以改變其內(nèi)容,這是在瀏覽器的地址欄上完成的。命令的語(yǔ)法如下:
javascript:alert(#command#)
例如,如果你想在http://www.example.com站點(diǎn)上看到一個(gè)alert警告框,那么首先在地址欄上輸入U(xiǎn)RL并等待頁(yè)面加載完成,然后刪掉URL并輸入:
javascript:alert("Hello World")
作為新的URL。這將彈出一個(gè)“Hello World”警告框,使用這一技術(shù)幾乎可以改變網(wǎng)頁(yè)的任何內(nèi)容,例如一張圖片。假設(shè)有一張網(wǎng)站logo圖片,我們通過(guò)查看頁(yè)面源文件找到其中一段HTML代碼:
<IMG Name="hi" SRC="hello.gif">
圖片被命名為“hi”,源文件是“hello.gif”,我們想要把它改成存儲(chǔ)在我們站點(diǎn)(http://www.mysite.com)上的 “bye.jpeg”文件,因此圖片完整的URL地址是http://www.mysite.com/bye.jpeg,使用Javascript注入, 我們只需要在地址欄上輸入:
javascript:alert(document.hi.src="http://www.mysite.com/bye.jpeg")
你將會(huì)看到彈出“http://www.mysite.com/bye.jpeg”alert警告,然后圖片就被更改了。需要注意的是,這些更改只是暫時(shí)的!如果你刷新頁(yè)面或者重新進(jìn)入,你的更改將會(huì)消失,因?yàn)槟阒皇窃谀愕腜C作了這些更改,而不是在網(wǎng)頁(yè)服務(wù)器上。
使用同樣的方法我們可以查看或更改變量的值,例如我們?cè)诰W(wǎng)頁(yè)上找到一段這樣的代碼:
<SCRIPT LANGUAGE="JavaScript"> var a="test" </SCRIPT>
意思是變量a的值為“test”,現(xiàn)在我們輸入:
javascript:alert(a)
然后我們將其值改為“hello”:
javascript:alert(a="hello")
Javascript注入通常被用來(lái)更改表單屬性,假設(shè)有一段這樣的代碼:
<form name="format" 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>
我們想讓表單發(fā)送到我們的郵箱,而不是someone@somewhere.com。可以使用如下命令:
javascript:alert(document.format.mail.value="me@hacker.com")
也許你已經(jīng)注意到了這些命令的層次關(guān)系:
我們按照從左到右的順序依次說(shuō)明:
1)最左邊是document
2)然后是我們想要更改的對(duì)象名(比如document.hi.src)或其包含的對(duì)象(比如document.format.mail.value)
3)最后是我們想要更改的屬性(比如源路徑:document.hi.src,或變量值:document.format.mail.value)
4)使用“.”號(hào)分隔
5)當(dāng)我們想要更改屬性值的時(shí)候,我們使用“=”號(hào)和新的屬性值
*注釋:當(dāng)新的屬性值為字符串時(shí)(比如:document.format.mail.value="me@hacker.com")需要用雙引號(hào)把它括起來(lái)。
如果我們想要把它作為一個(gè)變量的值,則不需要使用雙引號(hào)""。例如我們想要將變量b的值賦予變量a,我們可以輸入javascript:alert(a=b)。
但是,頁(yè)面中的大部分標(biāo)簽都沒(méi)有名字,比如:
<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>
在這段代碼中沒(méi)有表單名,綜合上面這些信息,可以使用此命令:
javascript:alert(document. .mail.value="me@hacker.com")
在這種情況下我們必須統(tǒng)計(jì)并找出表單序號(hào),下面是一個(gè)例子:
<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>
在以上代碼中我們看見(jiàn)了3個(gè)表單,但我們只對(duì)第二個(gè)感興趣,因此我們想要的表單序號(hào)就是2。不要忘記我們是從1開(kāi)始計(jì)算的,比如1,2,3,4...而javascript卻從0開(kāi)始計(jì)算,比如0,1,2,3...所以真正的表單序號(hào)是1,不是2,通常我們要把找到的表單序號(hào)減一。我們將用這個(gè)序號(hào)來(lái)補(bǔ)全我們的命令:
javascript:alert(document.forms[1].mail.value="me@hacker.com")
這樣你就可以更改沒(méi)有名字的圖片或鏈接了,你可以把“forms”換成任何你想要的標(biāo)簽類(lèi)型。對(duì)于圖片就是
javascript:alert(document.images[3].src="#the url of the picture you want#")
對(duì)于鏈接就是
javascript:alert(document.links[0].href="#the url you want#")
最后,我們可以用這個(gè)技巧來(lái)編輯cookies。下面的命令由triviasecurity.net的Dr_aMado編寫(xiě),我只修改了一點(diǎn)點(diǎn),讓它在用戶編輯之前顯示出來(lái)。你只要把它們復(fù)制到地址欄就可以了:
javascript:alert(window.c=function a(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:","")))
//如果你想要手動(dòng)更改你的cookie,可以使用下面這條命令:
javascript:alert(document.cookie)
這將顯示你的當(dāng)前cookie,假設(shè)是“userid=1”,如果你想把它改成“userid=2”,可以使用下列命令:
javascript:alert(document.cookie="userid=2")
最后我必須強(qiáng)調(diào)的是,所有的更改都只是在客戶端!就像是把網(wǎng)頁(yè)保存在你的PC上然后修改它。盡管如此,使用這一技巧你仍然可以欺騙頁(yè)面(例如cookies)或繞過(guò)安全驗(yàn)證。例如一些網(wǎng)頁(yè)會(huì)檢測(cè)用戶發(fā)送數(shù)據(jù)的位置,如果從http://www.test.com/form.php 發(fā)送數(shù)據(jù)到http://www.test.com/check.php,check.php可能會(huì)檢測(cè)數(shù)據(jù)是否來(lái)自http: //www.test.com/form.php上的表單。除此之外,如果你打算在頁(yè)面中輸入你自己的JavaScript代碼,通過(guò)使用一些這樣的技巧,你將能夠更改圖片并保持不變!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用element-plus時(shí)重寫(xiě)樣式不起作用的問(wèn)題及解決方法
這篇文章給大家介紹使用element-plus時(shí)重寫(xiě)樣式不起作用的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-09-09javascript Promise簡(jiǎn)單學(xué)習(xí)使用方法小結(jié)
下面小編就為大家?guī)?lái)一篇javascript Promise簡(jiǎn)單學(xué)習(xí)使用方法小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05artDialog+plupload實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了artDialog+plupload實(shí)現(xiàn)多文件上傳的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07Js實(shí)現(xiàn)復(fù)選框的全選、全不選反選功能代碼實(shí)例
這篇文章主要介紹了Js實(shí)現(xiàn)復(fù)選框的全選、全不選和反選,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02javascript事件監(jiān)聽(tīng)與事件委托實(shí)例詳解
這篇文章主要介紹了javascript事件監(jiān)聽(tīng)與事件委托,結(jié)合實(shí)例形式詳細(xì)分析了javascript事件監(jiān)聽(tīng)與事件委托相關(guān)原理、用法與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08Bootstrap開(kāi)發(fā)中Tab標(biāo)簽頁(yè)切換圖表顯示問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于Bootstrap開(kāi)發(fā)中Tab標(biāo)簽頁(yè)切換圖表顯示問(wèn)題的解決方法,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07JavaScript原生節(jié)點(diǎn)操作小結(jié)
本文主要介紹了JavaScript原生節(jié)點(diǎn)操作的相關(guān)知識(shí)。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01深入淺析JavaScript面向?qū)ο蠛驮秃瘮?shù)
這篇文章主要介紹了深入淺析JavaScript面向?qū)ο蠛驮秃瘮?shù)的相關(guān)資料,需要的朋友可以參考下2016-02-02