用ASP代码实现跨站脚本攻击

急,求解答!为什么我配置了IIS,代码也和书本上一致,还是不能正确显示如书本的结果呢?

脚本代码如下:
(1)index.asp如下:

<%@Language=VBScript%>
<%If Request.Cookies("userName")<>""Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl&Response.Cookies("userName")
Response. Redirect(strRedirectUrl)
Else %>


</span> MyNiceSite. com Home Page <span class="hljs-variable">

< BODY >    
< H2> MyNiceSite. com     
< FORM method= "post" action= "page2. asp">    
Enter your MyNiceSite. com username:    
< INPUT type ="text" name= "userName">    
< INPUT type= "submit" name= "submit" value =" submit' >    



<%End If%>

(2)page2.asp如下:


<%@ Language =VBScript%>
<%Dim strUserName
If Request. QueryString("userName")<> "" Then
strUserName=Request. QueryString("userName" ')
Else
Response. Cookies("userName")=Request. Form("userName")
strUserName=Request. Form( "userName" )
End If %>
< HTML>
< HEAD> HEAD>
< BODY>
< H3 align= "center"> Hello: <%= strUserName %> 
BODY>
HTML>


书上内容及结果如下:

img

img

我的运行结果如下:

img

希望有心人教教我!教我做成功或者截图教我做成感谢感谢!

你的主要问题是把代码打对,不该空格的地方不要空格,比如 Request. QueryString("userName" ') ,这样子是没法获取到请求数据中的查询字符串的。 应该是Request.QueryString("userName"),并且在传参中,尾巴多了一个单引号...诸如此类的问题有多处。

我把代码试了一下,主流浏览器都能正常运行。使用的Visual studio 2022,运行在IIS express上。

index.asp :

<%@ Language=VBScript %>
<% If Request.Cookies("userName")<>"" Then
  Dim strRedirectUrl
  strRedirectUrl = "page2.asp?userName="
    strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
  Response.Redirect(strRedirectUrl)
Else%>
<html>
<head>
    <title>MyNiceSite.com Home Page </title>
</head>
<body>
    <h2>MyNiceSite.com </h2>
    <form method="post" action="page2.asp">
        Enter your MyNiceSite.com username:    
        <input type="text" name="userName">
        <input type="submit" name="submit" value="submit">
    </form>
</body>
</html>
<% End If %>

Page2.asp:

<%@ language="VBScript" %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Then
    strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName")
End If %>
<html>
<head>
    <title>Page2</title>
</head>
<body>
    <h3 align="center">Hello: <%= strUserName %> </h3>
</body>
</html>

这是Chrome浏览器里的测试结果,Edge, IE什么的都可以:

img

部署到IIS里,结果是一样的,这是Edge的测试结果:

img

你需要先讓你的 iis / asp 可以正確的執行普通網頁(例如 hello world 這類的)。
另外,除了 microsoft windows ie 可以執行 vbscript, 其他瀏覽器無法使用。
個人認為應該提早學 javascript。

HTML标签不要有空格:

img