欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js注入 黑客之路必備!

 更新時(shí)間:2016年09月14日 16:21:45   作者:小明快點(diǎn)跑  
這篇文章主要為大家詳細(xì)介紹了js注入,黑客之路必備!本文告訴大家什么是js注入,如何進(jìn)行js注入攻防,感興趣的小伙伴們可以參考一下

最近剛出了新聞,阿里四名網(wǎng)絡(luò)安全部門員工利用網(wǎng)頁漏洞寫js腳本搶月餅,于是興致來了,想了解一下這個(gè)js腳本到底怎么寫,各種刷單各種搶槍搶又是怎么實(shí)現(xiàn)的。 

什么是javascript注入攻擊?

1.每當(dāng)接受用戶輸入的內(nèi)容并重新顯示這些內(nèi)容時(shí),網(wǎng)站就很容易遭受 JavaScript 注入攻擊。讓我們研究一個(gè)容易遭受 JavaScript 注入攻擊的具體應(yīng)用程序。假設(shè)已經(jīng)創(chuàng)建了一個(gè)客戶反饋網(wǎng)站。客戶可以訪問網(wǎng)站并輸入對(duì)產(chǎn)品的反饋信息。當(dāng)客戶提交反饋時(shí),反饋信息重新顯示在反饋頁面上。
客戶反饋網(wǎng)站是一個(gè)簡(jiǎn)單的網(wǎng)站。不幸的是,此網(wǎng)站容易遭受 JavaScript 注入攻擊。
假設(shè)正在將以下文本輸入到客戶反饋表單中: 

<script>alert(“Attack!”)</script> 

此文本表示顯示警告消息框的 JavaScript 腳本。在某人將此腳本提交到客戶反饋表單后,消息Attack! 會(huì)在將來任何人訪問客戶反饋網(wǎng)站時(shí)顯示。

2.還有一種就是在瀏覽器地址欄中輸入一段js代碼,用來改變頁面js變量、頁面標(biāo)簽的內(nèi)容。 

使用Javascript注入,用戶不需要關(guān)閉或保存網(wǎng)頁就可以改變其內(nèi)容,這是在瀏覽器的地址欄上完成的。命令的語法如下: 

javascript:alert(#command#)

例如,如果你想在http://www.example.com站點(diǎn)上看到一個(gè)alert警告框,那么首先在地址欄上輸入U(xiǎn)RL并等待頁面加載完成,然后刪掉URL并輸入: 

javascript:alert("Hello World")

作為新的URL。這將彈出一個(gè)“Hello World”警告框,使用這一技術(shù)幾乎可以改變網(wǎng)頁的任何內(nèi)容,例如一張圖片。假設(shè)有一張網(wǎng)站logo圖片,我們通過查看頁面源文件找到其中一段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í)的!如果你刷新頁面或者重新進(jìn)入,你的更改將會(huì)消失,因?yàn)槟阒皇窃谀愕腜C作了這些更改,而不是在網(wǎng)頁服務(wù)器上。

使用同樣的方法我們可以查看或更改變量的值,例如我們?cè)诰W(wǎng)頁上找到一段這樣的代碼: 

<SCRIPT LANGUAGE="JavaScript">
var a="test"
</SCRIPT> 

意思是變量a的值為“test”,現(xiàn)在我們輸入: 

javascript:alert(a) 

然后我們將其值改為“hello”: 

javascript:alert(a="hello")

Javascript注入通常被用來更改表單屬性,假設(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)系:
 •我們按照從左到右的順序依次說明:
 •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)把它括起來。
 •如果我們想要把它作為一個(gè)變量的值,則不需要使用雙引號(hào)""。例如我們想要將變量b的值賦予變量a,我們可以輸入javascript:alert(a=b)。
 •但是,頁面中的大部分標(biāo)簽都沒有名字,比如: 

<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> 

在這段代碼中沒有表單名,綜合上面這些信息,可以使用此命令: 

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> 

•在以上代碼中我們看見了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ǔ)全我們的命令:

javascript:alert(document.forms[1].mail.value="me@hacker.com")

•這樣你就可以更改沒有名字的圖片或鏈接了,你可以把“forms”換成任何你想要的標(biāo)簽類型。對(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è)技巧來編輯cookies。下面的命令由triviasecurity.net的Dr_aMado編寫,我只修改了一點(diǎn)點(diǎn),讓它在用戶編輯之前顯示出來。你只要把它們復(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)頁保存在你的PC上然后修改它。盡管如此,使用這一技巧你仍然可以欺騙頁面(例如cookies)或繞過安全驗(yàn)證。例如一些網(wǎng)頁會(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ù)是否來自http: //www.test.com/form.php上的表單。除此之外,如果你打算在頁面中輸入你自己的JavaScript代碼,通過使用一些這樣的技巧,你將能夠更改圖片并保持不變!

最后的最后,既然js注入這么可怕,我們自己寫的網(wǎng)站有什么解決辦法來防止js注入呢? 

方法一:

阻止 JavaScript 注入攻擊的一種簡(jiǎn)單方法是重新在視圖中顯示數(shù)據(jù)時(shí),用 HTML 編碼任何網(wǎng)站用戶輸入的數(shù)據(jù)
如:<%=Html.Encode(feedback.Message)%>
使用 HTML 編碼一個(gè)字符串的含意是什么呢?使用 HTML 編碼字符串時(shí),危險(xiǎn)字符如 < 和 > 被替換為 HTML 實(shí)體,如 &lt; 和 &gt;。所以,當(dāng)使用 HTML 編碼字符串 <script>alert("Boo!")</script> 時(shí),它將轉(zhuǎn)換為 &lt;script&gt;alert("Attack!")&lt;/script&gt;。瀏覽器在解析編碼的字符串時(shí)不再執(zhí)行 JavaScript 腳本。而是顯示無害的頁面。 

方法二:

除了在視圖中顯示數(shù)據(jù)時(shí)使用 HTML 編碼數(shù)據(jù),還可以在將數(shù)據(jù)提交到數(shù)據(jù)庫之前使用 HTML 編碼數(shù)據(jù)。 

StringEscapeUtils.escapeHtml("前臺(tái)提交的數(shù)據(jù)"); 

通常,人們喜歡使用本教程中討論的第一種方法,而不喜歡使用第二種方法。第二種方法的問題在于在數(shù)據(jù)庫中最終會(huì)保留 HTML 編碼的數(shù)據(jù)。換言之,數(shù)據(jù)庫中的數(shù)據(jù)會(huì)包含奇怪的字符。這有什么壞處呢?如果需要用除網(wǎng)頁以外的形式顯示數(shù)據(jù)庫數(shù)據(jù),則將遇到問題。例如,不能輕易在 Windows Forms 應(yīng)用程序中顯示數(shù)據(jù)。

感謝網(wǎng)友分享:http://zxf-noimp.iteye.com/blog/1130771

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript isArray()函數(shù)判斷對(duì)象類型的種種方法

    JavaScript isArray()函數(shù)判斷對(duì)象類型的種種方法

    我們知道,JavaScript中檢測(cè)對(duì)象類型的運(yùn)算符有:typeof、instanceof,還有對(duì)象的constructor屬性
    2010-10-10
  • JS實(shí)現(xiàn)IE狀態(tài)欄文字縮放效果代碼

    JS實(shí)現(xiàn)IE狀態(tài)欄文字縮放效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)IE狀態(tài)欄文字縮放效果代碼,涉及JavaScript針對(duì)瀏覽器的相關(guān)調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 微信小程序webSocket的使用方法

    微信小程序webSocket的使用方法

    這篇文章主要介紹了微信小程序webSocket的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 二維碼圖片生成器QRCode.js簡(jiǎn)單介紹

    二維碼圖片生成器QRCode.js簡(jiǎn)單介紹

    這篇文章主要為大家簡(jiǎn)單介紹了二維碼圖片生成器QRCode.js,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JavaScript工具庫之Lodash詳解

    JavaScript工具庫之Lodash詳解

    這篇文章主要介紹了JavaScript工具庫之Lodash詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • 微信小程序?qū)崿F(xiàn)保存圖片到相冊(cè)功能

    微信小程序?qū)崿F(xiàn)保存圖片到相冊(cè)功能

    項(xiàng)目中有個(gè)保存二維碼到相冊(cè)的功能,所以涉及到用戶是否授權(quán)相冊(cè)權(quán)限的問題。這篇文章主要介紹了微信小程序?qū)崿F(xiàn)保存圖片到相冊(cè)功能,需要的朋友可以參考下
    2018-11-11
  • js判斷空對(duì)象的實(shí)例(超簡(jiǎn)單)

    js判斷空對(duì)象的實(shí)例(超簡(jiǎn)單)

    下面小編就為大家?guī)硪黄猨s判斷空對(duì)象的實(shí)例(超簡(jiǎn)單)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • js,jq,css多方面實(shí)現(xiàn)簡(jiǎn)易下拉菜單功能

    js,jq,css多方面實(shí)現(xiàn)簡(jiǎn)易下拉菜單功能

    這篇文章主要介紹了js,jq,css多方面實(shí)現(xiàn)簡(jiǎn)易下拉菜單功能,需要的朋友可以參考下
    2017-05-05
  • js完美實(shí)現(xiàn)@提到好友特效(兼容各大瀏覽器)

    js完美實(shí)現(xiàn)@提到好友特效(兼容各大瀏覽器)

    本文給大家分享的是一則使用javascript完美實(shí)現(xiàn)兼容各大瀏覽器的@好友自動(dòng)提示的特效,是根據(jù)百度貼吧的效果模仿來的,推薦給小伙伴們,希望大家能夠喜歡。
    2015-03-03
  • javascript中call apply 的應(yīng)用場(chǎng)景

    javascript中call apply 的應(yīng)用場(chǎng)景

    call, apply都屬于Function.prototype的一個(gè)方法,它是JavaScript引擎內(nèi)在實(shí)現(xiàn)的,因?yàn)閷儆贔unction.prototype,所以每個(gè)Function對(duì)象實(shí)例,也就是每個(gè)方法都有call, apply屬性.
    2015-04-04

最新評(píng)論