我对xss以及sql的理解
Xss和sql基础原理
1.Xss(跨站脚本)基础
XSS 漏洞简介
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
常见的输出函数有: echo printf print print_r sprintf die var-dump var_export.
分类
反射型XSS:非持久 就是攻击者先制作好一个攻击的链接,然后去骗目标去点击这个链接,用户点击后就会触发xss代码。
存储型XSS:持久化 存储型的xss是存储在服务器中的,如在一些博客留言页面加入xss代码,如果没有过滤,那这个代码就会存储在服务器里面,每当一个用户访问你留下xss代码的页面,就会触发代码。
DOM型XSS:dom型和反射型的差不多都是存在于网页上不依赖于提交数据到服务器,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞
2.sql注入基础
1 SQL注入简介
SQL注入攻击是将精心构造的恶意SQL语句插入或添加到用户的输入参数中,再将这些参数传递给后台的SQL服务器加以解析并执行的攻击。
即SQL注入攻击是一种利用数据库驱动的Web应用所固有的特性(用户输入的参数将会直接输送到Web应用架构的逻辑层上),以及Web应用开发人员对用户输入的参数没有进行严格的审查所引发的漏洞的攻击。
理解:这是一种由当前数据库驱动的Web应用架构所决定的特性,不改变架构则该特性一直存在。因此安全人员需要做的就是对用户输入的参数进行详细的考虑和处理,避免出现SQL注入漏洞。
3.sql注入方式
直接把代码插入到参数中:这些参数会被置入sql命令中加以执行
把恶意代码插入到字符串中:此后这些数据将会保存到数据库的数据表中或被当作元数据,当将存储的字符串置入动态SQL命令时,恶意代码就将被执行。
注入方法:
1.猜表名。列名等
先猜表名And (Select count(*) from 表名)<>0
猜列名
And (Select count(列名) from 表名)<>0
或者也能够这样
and exists (select * from 表名) and exists (select 列名 from 表名)
返回正确的,那么写的表名或列名就是正确
2.后台身份验证绕过漏洞
验证绕过漏洞就是'or'='or'后台绕过漏洞,利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误
比如管理员的账号password都是admin。那么再比方后台的数据库查询语句是
user=request("user")
passwd=request("passwd")
sql='select admin from adminbate where user='&'''&user&'''&' and passwd='&'''&passwd&'''
那么我使用'or 'a'='a来做usernamepassword的话,那么查询就变成了
select admin from adminbate where user=''or 'a'='a' and passwd=''or 'a'='a'
这种话,依据运算规则。这里一共同拥有4个查询语句,那么查询结果就是 假or真and假or真,先算and 再算or,终于结果为真 。这样就能够进到后台了~