关于jsp初步学习以及xss-labs搭建及部分通关教程

一、简单的jsp语法
1.jsp简介

JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。

JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。

JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。

JSP文件后缀名为 *.jsp 。

JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
2.jsp语法
1.jsp语句需要用<%%>来包含或者jsp:scriptlet
</jsp:scriptlet>来包含
2 .任何文本、HTML标签、JSP元素必须写在脚本程序的外面。
3.中文编码问题
如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
4.jsp声明
一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,必须先声明这些变量和方法然后才能使用它们。
JSP声明的语法格式:
<%! declaration; [ declaration; ]+ … %>
5.jsp表达式
一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
JSP表达式的语法格式:
<%= 表达式 %>
6. JSP注释
JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。
JSP注释的语法格式:
注释内容写在段落前面并且不要加html标签
<%-- 该部分注释在网页中不会被显示–%>
7. JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

JSP指令语法格式:

<%@ directive attribute=“value” %>

这里有三种指令标签
(1)<%@ page … %> 定义页面的依赖属性,比如脚 本语言、error页面、缓存需求等等
(2)<%@ include … %> 包含其他文件
(3)<%@ taglib … %> 引入标签库的定义,可以是自定义标签
8. JSP行为
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。
行为标签只有一种语法格式,它严格遵守XML标准:
<jsp:action_name attribute=“value” />
9. JSP 隐含对象

JSP 支持九个自动定义的变量,江湖人称隐含对象,它们是在 JSP 页面中自动可用的对象,无需额外的声明或初始化。

这九个隐含对象的简介见下
(1)request HttpServletRequest类的实例,代表 HTTP 请求的对象,包含客户端发送到服务器的信息,如表单数据、URL参数等。
(2)response HttpServletResponse类的实例,代表 HTTP 响应的对象,用于向客户端发送数据和响应。
(3)out JspWriter类的实例,用于向客户端输出文本内容的对象,通常用于生成HTML。
(4)session HttpSession类的实例,代表用户会话的对象,可用于存储和检索用户特定的数据,跨多个页面。
(5)application ServletContext类的实例,代表 Web 应用程序的上下文,可以用于存储和检索全局应用程序数据。
(6)config ServletConfig类的实例,包含有关当前 JSP 页面的配置信息,例如初始化参数。
(7)pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
(8)page 类似于 Java 类中的 this 关键字,代表当前 JSP 页面的实例,可以用于调用页面的方法。
(9)exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,用于处理 JSP 页面中的异常情况,可用于捕获和处理页面中发生的异常。
10. 控制流语句
JSP提供对Java语言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代码块,包括判断语句和循环语句等等。
(1)判断语句
<% if (day == 1 || day == 7) { %>

今天是周末


<% } else { %>

今天不是周末


<% } %>
·switch…case
<%
switch(day) {
case 0:
out.println(“星期天”);
break;
case 1:
out.println(“星期一”);
break;
case 2:
out.println(“星期二”);
break;
case 3:
out.println(“星期三”);
break;
case 4:
out.println(“星期四”);
break;
case 5:
out.println(“星期五”);
break;
default:
out.println(“星期六”);
}
%>
(2)循环语句
在JSP程序中可以使用Java的三个基本循环类型:for,while,和 do…while。
·for
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>

12465


<%}%>
while
<%while ( fontSize <= 3){ %>

123
546


<%fontSize++;%>
<%}%>
11.JSP运算符
JSP支持所有Java逻辑和算术运算符。
下表罗列出了JSP常见运算符,优先级从高到底:
在这里插入图片描述 12.JSP 字面量
JSP语言定义了以下几个字面量:
布尔值(boolean):true 和 false;
整型(int):与 Java 中的一样;
浮点型(float):与 Java 中的一样;
字符串(string):以单引号或双引号开始和结束;
Null:null。
二、xss-labs搭建及前四关教学
1.搭建
和之前的搭建方式一样,先用小皮穿件一个网站,再把xss-labs拖进去就行
ps:这里要用的php版本是5.4.45,记得下
2.第一关
在这里插入图片描述查看源码
在这里插入图片描述可以发现get传参name的值test插入了html里头,还回显了payload的长度
所以直接使用js代码注入即可
在这里插入图片描述(2)第二关
查看源码
在这里插入图片描述先试试弹窗函数
在这里插入图片描述没反应,但是源码变了 在这里插入图片描述第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可
在这里插入图片描述(3)第三关
在这里插入图片描述查看源码,这个是单引号闭合
在这里插入图片描述这里又禁止了一部分,利用onfocus事件绕过
在这里插入图片描述(4)第四关
在这里插入图片描述和上一关禁止的没区别,但是是双引号
" οnfοcus=javascript:alert() “用这个事件继续绕过即可
在这里插入图片描述(5)第五关
使用a href标签法构建payload
在这里插入图片描述(6)第六关
大写绕过
在这里插入图片描述(7)第七关
在这里插入图片描述双拼绕过
(8)第八关
利用href的隐藏属性自动Unicode解码插入一段为协议
javascript:alert()
在这里插入图片描述(9)第九关
插入指定内容并注释
在这里插入图片描述javascript:alert()/* http:// */
(10)第十关
这里输入框被隐藏了,需要添加type=“text”,构造payload
在这里插入图片描述(11)
referer头被隐藏,抓包添加一个referer头传参即可
在这里插入图片描述(12)user-agent头
在这里插入图片描述(13)cookie头
在这里插入图片描述(14)
不会
(15)
ng-include函数包含其他关然后使其他关弹窗即可
在这里插入图片描述(16)第十六关
观察源码可以知道把script替换成空格,用回车可以替换空格,g%0 在这里插入图片描述(17)第十七关
传参?arg02= οnclick=alert()
再点击embed标签的区域
(18)第十八关
和上一关一样
(19)第十九关
?arg01=version&arg02= here
向flash中插入js代码(swf反编译)
(20)第二十关
?arg01=id&arg02=xss”))}catch(e){alert(1)}//%26width=123%26height=123
swf反编译
  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值