随笔分类 -  dvwa

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

点击右上角即可分享
微信分享提示