DVWA 之 JavaScript Attacks

汇总链接:
https://baynk.blog.csdn.net/article/details/100006641
------------------------------------------------------------------分割线------------------------------------------------------------------
更新后的另外一个内容了,这里好像就是学习一些JS相关的东西,玩起来和前面挺不一样的,感觉是时候去学JS了。。。
DVWA 之 JavaScript Attacks_第1张图片


LOW

服务器端核心代码


$page[ 'body' ] .= <<<EOF

EOF;
?>

其实没啥东西,就是从github上弄了个md5运算的脚本回来,在前端生成了一个token

漏洞利用

先看提示,输入success就算你赢
DVWA 之 JavaScript Attacks_第2张图片
当提交success以后,却报token不对。
DVWA 之 JavaScript Attacks_第3张图片
在前端去修改token,隐藏的真的深。。。
DVWA 之 JavaScript Attacks_第4张图片
ChangeMe改成success,然后去控制台重新执行一次JS,注意JS什么都不需要改。
DVWA 之 JavaScript Attacks_第5张图片
切回到前端,发现token已经成功修改了。
DVWA 之 JavaScript Attacks_第6张图片
接着在DVWA里输入sucess,搞定。
DVWA 之 JavaScript Attacks_第7张图片


Medium

服务器端核心代码


$page[ 'body' ] .= <<<EOF

EOF;
?>

这次JS直接告诉了,并不在前端。

漏洞利用

DVWA 之 JavaScript Attacks_第8张图片
和前面没什么区别,仍然还是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")
		}

接着在审查元素中,找到对应的代码。
DVWA 之 JavaScript Attacks_第9张图片
ChangeMe改为success以及发现token那里是空的,虽然有调用JS,但是JS中只定义了函数,并没有去调用。所以这里我们自己在控制台中调用一下,切回来发现已经修改好了。
DVWA 之 JavaScript Attacks_第10张图片
DVWA中提交一下,搞定。
DVWA 之 JavaScript Attacks_第11张图片


High

服务器端核心代码


$page[ 'body' ] .= <<<EOF

EOF;
?>

Medium一样。

漏洞利用

输入success仍然提示token有问题
DVWA 之 JavaScript Attacks_第12张图片
看了下前端,和上一关没什么区别,访问下JS,查看下内容。
DVWA 之 JavaScript Attacks_第13张图片
看着有点恶心,没耐心看下去。。。直接在控制台输入JS,切回来就发现有token了。
DVWA 之 JavaScript Attacks_第14张图片
DVWA中提交,搞定。。。
DVWA 之 JavaScript Attacks_第15张图片
啊哈哈。。。失败了,果然没看JS是不行的。。。。。。。。。。。。。
回头去看JS,有不少\x,以为是utf8,转了半天,也没转出来,后来查了下JS相关的东西,找到了obfuscate javascript相关的资料,这里提供一个站点,还原JS混淆

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);

这里就看最后一部分就可以了,前面真是太长了。。。这段代码最后指的是先执行token_part_2("XX"),但是由于设置了延时,所以其实是先执行token_part_1("ABCD", 44);,再执行token_part_2("XX"),最后点击click的时候就会执行token_part_3
首先在前端将值改为success
DVWA 之 JavaScript Attacks_第16张图片
然后去控制台先将所有的JS输入一遍,注意是包括那些非常长非常长的一部分,但是要排除被我选中的以下几行。
DVWA 之 JavaScript Attacks_第17张图片
接着在控制下,依次执行token_part_1("ABCD", 44);token_part_2("XX")
DVWA 之 JavaScript Attacks_第18张图片
最后直接提交就搞定了。
DVWA 之 JavaScript Attacks_第19张图片


Impossible

DVWA 之 JavaScript Attacks_第20张图片
啥都没,根本就没有Impossible,就这么一句话。。。请你不要信任来自用户的任何消息!!!

你可能感兴趣的:(#,DVWA)