20192411 2021-2022-2 《网络与系统攻防技术》实验八实验报告

学号20192411 2021-2022-2 《网络与系统攻防技术》实验八实验报告

1.实验内容

(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

2.实验过程

2.1 Web前端HTML

  • 首先是安装apache,因为kali自带apache,所以只需要直接启动就可以了。

    /etc/init.d/apache2 start
    

  • 启动之后,可以用status查看其状态。

    /etc/init.d/apache2 status
    

    可以看到此时正在运行。

  • 还可以在浏览器输入本机的IP地址打开apache的默认网页,可以看到“It works!”,证明apache服务正在运行。

  • 开启apache服务后,进入/var/www/html目录,即apache目录,创建一个html文件,命名为form_20192411.html,然后编写含有表单的HTML代码。

  • 接着在浏览器打开刚刚编写的文件(地址为文件路径,即/var/www/html/form_20192411.html),就可以看到我们编写出来的效果。

2.2 Web前端javascipt

  • 在2.1的基础上,编写JavaScript验证用户名、密码的规则,在用户点击登陆按钮后回显“欢迎+输入的用户名”。

  • 因为路径没变,所以只需要刷新刚刚打开的网页,然后输入用户名和密码。

  • 然后点登录,就会出现欢迎20192411。

  • 如果用户名或者密码为空,就会弹出提示。

  • 接着尝试注入攻击:

    <script language="javascript">alert("20192411")</script>
    

    发现还是会正常登录,并且执行了我们注入的代码弹出了消息框。

2.3 Web后端:MySQL基础

  • 首先在kali中启动mysql服务,命令为:

    service mysql start
    

  • 启动之后就可以进入mysql了,进入的时候需要输入密码,命令为:

    mysql -u root -p
    

  • 进入mysql后可以查看数据库的基本信息。

    show databases;
    

    可以看到有四个数据库。

  • 接着就是创建用户,用如下命令创建一个登录用户。

    create user 'hzr'@'localhost' identified by '20192411';
    

    然后就可以用新建的用户登录。

  • 然后可以用如下命令修改用户密码。

    set password for hzr@'localhost'=password('2411');
    

  • 接着创建一个数据库,然后再一次查看可以发现多了一个数据库。

    create database db_hzr;
    show databases;
    

  • 然后使用刚建的数据库:use db_hzr

  • 接着就可以进行建表操作。

    create table login(username VARCHAR(20),password VARCHAR(20));
    

  • 再往表中插入一条数据

    insert into login values('20192411hzr','123456');
    

  • 插入后再用查询语句查看新建的login表

    select * from login;
    

2.4 Web后端:编写PHP网页,连接数据库,进行用户认证

  • 利用刚刚编写好的前端,接着编写后端的php网页。依旧在刚刚编写的html文件所在目录下新建一个php文件,然后编写代码。

    可以看到前面连接了数据库db_hzr,接着在数据库中查找,对用户进行了认证。

  • 然后在刚才的html文件中,将form的action属性改为php的文件名,即login.php。

  • 之后打开网站127.0.0.1/form_20192411.html,然后输入用户名和密码登录。

    如果没有匹配的数据信息,则跳转登录失败:

    如果匹配则跳转登录成功:

2.5最简单的SQL注入,XSS攻击测试

  • 首先是SQL注入。在刚刚的网站中,用户名栏输入' or 1=1#,接着随便输入密码,然后登录,就可以成功跳转到登录成功的页面。

    可以看到成功跳转到登录成功的页面了。

  • 刚刚在用户名中输入的' or 1=1#和后端代码中的查询语句SELECT * FROM login where username='$uname' and password='$pwd';结合起来就变成了SELECT * FROM login where username='' or 1=1#' and password='$pwd';。可以发现后面密码的查询被注释掉了,而前面的or 1=1就让这个条件恒成立,所以不管密码输入什么都不会影响,1=1这个条件就能让页面跳转到登录成功的页面。

  • 之后是XSS攻击。在用户名栏中输入如下内容:

    <script>alert('hack')</script>
    

2.6 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

  • 首先在Github上下载webgoat的jar包,我选择的版本是8.1.0。Releases · WebGoat/WebGoat · GitHub

  • 下载下来后,在jar包所在目录下打开cmd安装并运行webgoat

    java -jar webgoat-server-8.1.0.jar
    

  • 然后用http://localhost:8080/WebGoat打开webgoat登录界面,然后先注册一个账号。

  • 登录进去后,首先是SQL注入部分。选择Injection中的SQL Injection (intro),然后我选择的是11页的题。

  • 这题是通过字符型SQL注入破坏数据机密性的,即查看非授权数据。利用逻辑OR,Name框填1,TAN框填1' or '1'='1

  • 然后是XSS攻击。选择Cross Site Scripting(XSS)。然后我选择的是第七页的题。

  • 这题要求用alert()或者console.log()尝试哪里有XSS,先按下Purchase,看看哪个输入是会回显的。

    可以看到电话框的输入是会回显的,然后在这个输入框中输入:

    <script>alert('page 7')</script>
    

    接着再Purchase,会发现成功弹出'page7'。

    题目就完成了。

  • 接着是CSRF攻击,选择Cross-Site Request Forgeries。

  • 然后选择第4页的题,右键第一个评论框,点击检查,然后将该处的HTML代码复制出来。

  • 新建一个HTML文件,粘贴刚刚复制的form,并补齐其他标签:

    <html>
        <body>
    			<form class="attack-form" accept-charset="UNKNOWN" id="csrf-review" method="POST" name="review-form" successcallback="" action="http://localhost:8080/WebGoat/csrf/review">
                <input class="form-control" id="reviewText" name="reviewText" value="20192411" type="text">
                <input class="form-control" id="reviewStars" name="stars" type="text">
                <input type="hidden" name="validateReq" value="2aa14227b9a13d0bede0388a7fba9aa9">
                <input type="submit" name="submit" value="Submit review">
                </form>
    		
    	</body>
    </html>
    
  • 然后打开新建的HTML文件,就会看到:

  • 然后点击Submit review,就可以完成了

3.问题及解决方案

  • 问题1:kali安装webgoat的时候,进入页面然后登录后总是无法显示。
  • 问题1解决方案:一开始认为是版本问题,新老版本试了几次发现都不行,最后改用Windows安装webgoat进行实验。

4.学习感悟、思考等

这次实验是Web安全,即进行了一些跟Web相关的实践,通过这次实验我学到了很多关于Web的攻击方式。包括前端和后端,对之前没接触过的XSS和CSRF攻击也有了新的认识。通过网上查找资料,最终成功完成了这一次实验。这次实验也是这学期网络攻防课最后一次实验了,感谢王老师一学期的讲解与指导,也感谢刘老师和同学们的帮助。

参考资料

posted @ 2022-06-06 13:10  20192411  阅读(63)  评论(0编辑  收藏  举报