JavaScript Attacks (前端攻击)

JavaScript Attacks(前端攻击)漏洞通常涉及利用Web应用程序中的安全漏洞,特别是在JavaScript代码的使用和实现上,从而对用户或系统造成损害

low

先根据提示输入success,回显说明存在token

抓包看看,可以发现存在token值,经过多次尝试,发现token值不会变化,也就是说每次提交使用的token值都是无效的,通过对源码的审计,发现token的生成基于generate_token()函数里的md5(rot13(’phrase‘)

生成token

在burp里修改token重新提交success

源码审计

核心代码:

  function rot13(inp) {
return inp.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);});
} function generate_token() {
var phrase = document.getElementById("phrase").value;
document.getElementById("token").value = md5(rot13(phrase));
} generate_token();

定义了两个函数,token主要是由输入的值md5(rot13)加密的

medium

与low级别操作方法基本一致,查看源码发现token基于do_elsesomething("XX")函数反转控制

抓包发现token是被反转的,可以手动修改

修改成功

源码审计

核心代码:

function do_something(e)
{for(var t="",n=e.length-1;n>=0;n--)t+=e[n];return t}
setTimeout(function()
{do_elsesomething("XX")},300);
function do_elsesomething(e)
{document.getElementById("token").value=do_something(e+document.getElementById("phrase").value+"XX")}

do_elsesomething利用这个函数进行反编码,将输入结果反序

high

步骤和上面没什么区别,查看源码发现是js混淆,在这个网站还原一下http://deobfuscatejavascript.com/,找出关键部分

由于执行 token_part_2("XX") 有 300 毫秒延时,所以 token_part_1("ABCD", 44) 会被先执行,而 token_part_3() 则是和提交按钮的 click 事件一起执行,控制台执行

然后输入success提交

源码审计

看核心代码:

执行 token_part_2("XX") 有 300 毫秒延时,所以 token_part_1("ABCD", 44) 会被先执行,而 token_part_3() 则是和提交按钮的 click 事件一起执行

function do_something(e) {
for (var t = "", n = e.length - 1; n >= 0; n--) t += e[n];
return t
}
function token_part_3(t, y = "ZZ") {
document.getElementById("token").value = sha256(document.getElementById("token").value + y)
}
function token_part_2(e = "YY") {
document.getElementById("token").value = sha256(e + document.getElementById("token").value)
}
function token_part_1(a, b) {
document.getElementById("token").value = do_something(document.getElementById("phrase").value)
}
document.getElementById("phrase").value = "";
setTimeout(function() {
token_part_2("XX")
}, 300);
document.getElementById("send").addEventListener("click", token_part_3);
token_part_1("ABCD", 44);

impossible

You can never trust anything that comes from the user or prevent them from messing with it and so there is no impossible level.

你永远不能相信来自用户的任何内容或阻止他们弄乱它,所以没有不可能的水平。

DVWA靶场JavaScript Attacks漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程的更多相关文章

  1. DVWA靶场实战(十四)——JavaScript

    DVWA靶场实战(十四) 五.Java Script: 1.漏洞原理: 这里的JavaScript其实是JavaScript Attack也就是JS攻击.JavaScript是一种基于对象和事件驱动的 ...

  2. DVWA靶场实战(五)——File Upload

    DVWA靶场实战(五) 五.File Upload: 1.漏洞原理: File Upload中文名叫做文件上传,文件上传漏洞是指用户上传了一个可执行脚本文件(php.jsp.xml.cer等文件),而 ...

  3. DVWA靶场实战(十)——XSS(DOM)

    DVWA靶场实战(十) 五.XSS(DOM): 1.漏洞原理: XSS全称为Cross Site Scripting,由于和层叠样式表(Cascading Style Sheets,CSS)重名,所以 ...

  4. dvwa靶场

    brute force LOW 输入账号密码直接抓包就行 接着ctrl+i传输到intruder模块中 为需要爆破的加上 §,不爆破的不加 选择攻击类型为Cluster bomb,选择username ...

  5. 从DVWA靶场学代码审计

    DVWA是较为经典的一个传统漏洞的靶场 内置了low,medium,hight,impossible四个安全级别供安全人员去研究相关漏洞.今天就来对impossible这个级别进行代码审计,从中学习一 ...

  6. DVWA靶场实战(四)——File Inclusion

    DVWA靶场实战(四) 四.File Inclusion: 1.漏洞原理: 随着网站的业务的需求,程序开发人员一般希望代码更加灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通 ...

  7. DVWA靶场实战(三)——CSRF

    DVWA靶场实战(三) 三.CSRF: 1.漏洞原理: CSRF(Cross-site request forgery),中文名叫做"跨站请求伪造",也被称作"one c ...

  8. DVWA靶场实战(二)——Command Injection

    DVWA靶场实战(二) 二.Command Injection: 1.漏洞介绍: Command Injection,中文叫做命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令 ...

  9. DVWA靶场实战(一)——Brute Force

    DVWA靶场实战(一) 一.Brute Force: 1.漏洞原理: Brute Force是暴力破解的意思,大致原理就是利用穷举法,穷举出所有可能的密码. 2.攻击方法: Burpsuite中的In ...

  10. DVWA靶场实战(六)——Insecure CAPTCHA

    DVWA靶场实战(六) 六.Insecure CAPTCHA: 1.漏洞原理: Insecure CAPTCHA(不安全的验证码),CAPTCHA全程为Completely Automated Pub ...

随机推荐

  1. MaskGCT,AI语音克隆大模型本地部署(Windows11),基于Python3.11,TTS,文字转语音

    前几天,又一款非自回归的文字转语音的AI模型:MaskGCT,开放了源码,和同样非自回归的F5-TTS模型一样,MaskGCT模型也是基于10万小时数据集Emilia训练而来的,精通中英日韩法德6种语 ...

  2. CMake 生成器表达式---条件表达式和逻辑运算符

    [写在前面] CMake 的生成器表达式用于在构建系统级别上进行条件判断和逻辑运算,它们通常用在目标属性和生成器表达式上下文中.这些表达式允许你根据不同的平台.配置或编译器来定制构建过程. 本文引用的 ...

  3. 3.6 Linux命令基本格式

    本节开始,我们不会再见到图形界面了,因为对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务.开放更多的端口,这对服务器的稳定性和安全性都有负面影响.其实,服务器是一个连显示器都没有的家伙 ...

  4. C++学习——访问修饰符

    一.类是什么 类是C++当中的一个集合,定义了"属性",通过类可以实例化对象,此时对象的属性就囊括在这个类当中.比如: class student { public: string ...

  5. 题解:CF771A Bear and Friendship Condition

    CF771A Bear and Friendship Condition 题解 算法 并查集,图的基本性质 分析 题目意思是,一旦有一些点联通,那么这些点必须两两直接相连.换句话讲,就是图中的每个联通 ...

  6. js中的数组去重的多种方法

    1. indexOf()方法 const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8] const newArr = [] arr.forEach(item =& ...

  7. Spring IOC、DI、AOP原理和实现

    (1)Spring IOC原理   IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是 ...

  8. 深入解析Apache Mina源码(1)——Mina的过滤器机制实现

    1.深入解析Apache Mina源码(1)--Mina的过滤器机制实现 2.深入解析Apache Mina源码(2)--Mina的事件模型 3.深入解析Apache Mina源码(3)--Mina的 ...

  9. python之数据库管理工具sandman2

    文档:Welcome to sandman2's documentation! - sandman2 0.0.1 documentation [安装] pip install sandman2 安装成 ...

  10. Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?

    代码直接放在Github仓库[https://github.com/Damaer/Mybatis-Learning ],可直接运行,就不占篇幅了. 目录 1.#{}占位符 2.${}拼接符 3.#{} ...