很久没碰这些东西了,加上之前也没整理过,正好趁着这个月整理一下。
bruteforce
easy 没有任何的防护,
medium 在easy的基础上,加了一个错误后的slepp(2)语句
high 一开始便检查了user_token和session_token,
impossible 在high的基础上,加上了PDO扩展,然后设置了失败的次数为3次,如果超过3次,等待15分钟
CSRF(cross site request forgery)
easy 没有任何的防护,由于逻辑设计的问题,可以直接更改密码
medium
File inclusion
easy 直接获取传入的数据
medium 过滤了../..\和http这种,防止遍历路径和远程文件包含漏洞
high 限制了要么为file开头或者include.php
impossible 设置了白名单,只能是file1/2/3/4.php或者Include.php
File upload
easy 没有任何的防护
medium 对文件的type和size进行了限制
high 对文件的后缀名进行了限制和检查了文件头getimagesize()
impossible 对上传文件进行了重命名(为md5值)而且生成了sessiontoken
关于XSS的一篇好的博客:https://segmentfault.com/a/1190000019484055
XSS三种,根据恶意代码是否存储在服务器当中,可以分为存储型和反射型;而DOM型的特点是不与游览器进行交互,直接用游览器上的DOM树解析产生。
XSS(DOM)
easy 没有任何的防护,
medium 过滤了script,而且后端把插入的语句放在了value里面,所以要查看HTML代码才知道要借助default=English,
然后在后面把前面的</option>和</select>标签闭合掉
high 设置了白名单,通过空格截断,然后通过#将后面的js语句插入进去
impossible 提示在客户端进行了处理,通过(lang),这个是通过URL编码之后的数据,不存在XSS漏洞了。【我还是有点懵】
XSS(reflect)
easy 没有任何防护
medium 简单的过滤了srcipt
high 全面过滤了script
impossible 加上了user_token和session_token,而且通过htmlspecialchars()对用户的输入进行了转义,使得< >/这种符号都没用了
XSS(store)
easy 对message的输入进行了转义,将" '转换成了\' \"这种
medium 对message的进行了全面的过滤,但对name只进行了简单的过滤,但是前端限制了name的长度,所以需要先改一下前端的长度,然后在进行插入
high 对message的进行了全面的过滤,但对name只进行了script的过滤,所以可以在改完前端之后,通过img标签进行插入
impossible 对两个都进行了全面的过滤
sql injection
easy GET普通单引号注入
medium POST数字型注入,过滤了单引号,后面的表名转换为0x16进制就好了
high 和easy一样,注释符用#
impossible 加上了user_token,而且采用了采用了PDO技术,划清了代码与数据的界限
sqlbind injection
easy GET普通单引号盲注
medium POST数字型注入,过滤了单引号,后面的表名转换为0x16进制就好了
high 和easy一样,只是注释符用#
impossible 加上了user_token,而且采用了采用了PDO技术,划清了代码与数据的界限
command injection
easy 没有任何防护
medium 对&&和 ; 进行了过滤
high 对各种各样的进行了过滤,但是有个空子,过滤的时候由于| 后面有个空格,导致可以选择|进行绕过
impossible 加上了user_token,而且对.进行了拆分,把数字提炼出来,然后进行了重组
看这篇博客比较好:https://blog.csdn.net/qq_36119192/article/details/82918141
csrf
easy 没有任何的防护
medium 要先检查referer字段,绕过的方法是只要referer里面包含了127.0.0.1这个本机地址就可以,
high 加上了user_token机制,好像要和xss漏洞联合使用才能得出结果。先用xss爆出token值,然后再转到csrf漏洞中构造url
impossible 要求先输入原密码,而且加上了PDO拓展限制了输入值。但是这里PDO好像不管用,主要是不知道原密码,爆破也不实际,进行了md5加密
Weak Session IDs
这个就是猜测出会话号,然后可以使用截取到的cookie值,利用游览器对登录状态的记录特性从而可以达到绕过账号密码登录的目的。
利用方法:用BP转包之后可以看到COOKIE值,然后点击FORWARD,让游览器记住这个登录的COOKIE值,然后把抓包关掉,开启一个新的页面,在HACKBAR传入网址和COOKIE值
easy sessionID值从0开始每次递增一
medium 采用了时间戳的形式
high 用MD5形式进行了加密
impossible 用SHA1对时间戳、随机数、固定字符串"impossible"进行了加密
【这个利用是伪造ID值,意思是假如我知道A的ID值是3,然后我想以B的身份登录进去,猜测一下B的ID值是4,然后进行尝试。因为B之前登录过,游览器有记录。】
insecure capture
这个是绕过验证码,实践是绕过验证码达到改密的目的。由于我们无法改变发送到google校验的resp返回值,所以只能利用其它路径。
easy 分为两步,第一步是验证校验码,第二步是存储密码改密了。由于通过验证change参数和step参数来判断的,所以我们可以抓包之后修改step即可
medium 和easy差不多,只是加了一个passed_captcha参数的校验,由于他是隐藏的,所以需要手动加上,然后修改step参数就好了
high 把两步合成一步了,把中间那个if条件语句等于false就好了。所以抓包之后修改recaptcha_response_field参数和伪造User-Agent
impossible 增加了Anti-CSRF token 机制防御CSRF攻击,利用PDO技术防护sql注入,验证码无法绕过,同时要求用户输入之前的密码
【前面的三种等级都可以通过构造CSRF来进行绕过。给一个博客:https://www.freebuf.com/articles/web/119692.html】