随笔分类 - dvwa
摘要:最近在学web安全,于是准备拿DVWA来练一练手,现将学习过程总结如下,旨在与朋友们交流,错误的地方还望大家指正。 学习目录 DVWA-0 DVWA简介及环境搭建 DVWA-1.1 Brute Force(暴力破解)-LowDVWA-1.2 Brute Force(暴力破解)-MediumDVWA-
阅读全文
摘要:Impossible Level 前台页面 提示:永远不能相信来自用户输入的任何信息,必须假设发送给用户的任何代码都可以被操纵或绕过,因此没有不可能的级别。 意思就是说,只要token是在客户端生成的,不论你的代码有多复杂,用户永远有办法操纵或者绕过它,因此,token的生成一定要在服务器端。 另外
阅读全文
摘要:High Level 高级和中级类似,生成 token 的逻辑在额外的 js 文件中。和中级不同的是,这里的 JS 经过了混淆,就显得很混乱。 而 http://deobfuscatejavascript.com中提供的功能是,把混淆后的代码转成人类能看懂一些 js 代码。 其中关键的部分是这里:
阅读全文
摘要:Medium Level 思路与Low级别是一样的,只是生成 token 的函数放到另外的 js 文件中了。 首先我们输入success,点击submit,页面返回“Invalid token.” 抓包发现,请求中的token值为空,所以我们需要构造正确的token。 查看前端源代码,发现生成tok
阅读全文
摘要:Low Level 查看页面 点击submit,发现页面返回“You got the phrase wrong.”。页面提示需要我们提交单词success。 尝试将输入框单词改为success,点击submit,后台返回“Invalid token.” F12查看前端源代码,发现token是在前端生
阅读全文
摘要:Impossible Level 查看源码 impossible.php <?php headerCSP); ?> <?php if (isset ($_POST[
阅读全文
摘要:High Level 查看源码 high.php <?php headerCSP); ?> <?php if (isset ($_POST['include']))
阅读全文
摘要:Medium Level 查看代码 <?php $headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';"; heade
阅读全文
摘要:CSP Content-Security-Policy是指HTTP返回报文头中的标签,浏览器会根据标签中的内容,判断哪些资源可以加载或执行。翻译为中文就是内容安全策略。是为了缓解潜在的跨站脚本问题(XSS),浏览器的扩展程序系统引入了内容安全策略这个概念。原来应对XSS攻击时,主要采用函数过滤、转义
阅读全文
摘要:Impossible Level 查看源码 <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Check Anti-CSRF token checkToken( _SESSION[ 'session_t
阅读全文
摘要:High Level 查看源码 <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input _POST[ 'mtxMessage' ] ); _POST[ 'txtName' ] )
阅读全文
摘要:Medium Level 查看代码 <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input _POST[ 'mtxMessage' ] ); _POST[ 'txtName' ]
阅读全文
摘要:Low Level 查看代码 <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input _POST[ 'mtxMessage' ] ); _POST[ 'txtName' ] );
阅读全文
摘要:Impossible Level 查看源码 <?php // Is there any input? if( array_key_exists( "name", _GET[ 'name' ] != NULL ) { // Check Anti-CSRF token check
阅读全文
摘要:High Level 查看源码 <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", _GET[ 'name' ] != NULL ) { // G
阅读全文
摘要:Medium Level 查看代码 <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", _GET[ 'name' ] != NULL ) { //
阅读全文
摘要:Low Level 查看代码 <?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", _GET[ 'name' ] != NULL ) { // Fe
阅读全文
摘要:Impossible Level 服务器端核心代码 <?php # Don't need to do anything, protction handled on the client side ?> 客户端核心代码 由于大多数浏览器默认将从URL中获取的内容进行编码,而客户端的源代码中直接将编码后
阅读全文
摘要:High Level 查看源码 <?php // Is there any input? if ( array_key_exists( "default", _GET[ 'default' ]) ) { # White list the allowable
阅读全文
摘要:Medium Level 查看代码 <?php // Is there any input? if ( array_key_exists( "default", _GET[ 'default' ]) ) { _GET['defaul
阅读全文