网络与系统攻防技术
实验八 Web安全
dky 20192414 袁浩然
实践目标
实验步骤
实验一 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
实验二 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
实验三 尝试注入攻击:利用回显用户名注入HTML及JavaScript
-
因为我们将HTML内容进行替换,则可以进行HTML和Javascript的注入攻击。
-
注入攻击代码演示如下
-
注入HMTL
-
注入Javascript
-
用户名填写为
<script>alert(1);</script>
-
按说会执行alert(1)进行弹窗,但是由于
return false
,没有进行重新加载,则JavaScript不会执行,导致失败。
-
替换后的网页
-
MysqL基础:正常安装、启动MysqL,建库、创建用户、修改密码、建表
-
点击启动即可启动
-
因为没有配置环境变量,进入MysqL安装文件夹使用
MysqL -u root -p
并输入root密码进入MySQL命令行
-
建立数据库
20192414_database
-
建立数据表
20192414_table
-
插入数据
-
通过select语句我们可以看到成功插入
-
更改密码
编写PHP网页,连接数据库,进行用户认证
最简单的sql注入,XSS攻击测试
-
sql注入
-
html注入
-
JavaScript注入
安装Webgoat或类似平台,并完成sql注入、XSS、CSRF攻击。
- 本实验使用pikachu平台进行练习
sql注入
数字型注入
字符型注入
搜索型注入
-
页面如下
-
输入
' or 1 =1#
,注入成功
xx型注入
XSS注入
反射型XSS(Get)
-
页面如下
-
随便注入11,发现is后面回显11
-
尝试写入
<script>alert(1);</script>
,发现写不完全
-
F12查看代码,发现只能输入20个字符
-
将20更改为100,输入
<script>alert(1);</script>
-
弹窗,注入成功!
-
另一种思路,注入111,用burp查看,message=111
-
将111改为
<script>alert(1);</script>
-
注入成功!
反射性XSS(POST)
CSRF攻击
- 上课时间已经演示过了,略
问题及解决方案
PHPstudy以及XAMPP MysqL无法正常启动
Javascript和PHP不熟练
PHP查询失败
- 使用
"SELECT id, username, password FROM MyUser WHERE username = " . $get_username . " and password = " . $get_password;
查询失败 - 发现用户名和密码需要用''括起来
- 改为
"SELECT id, username, password FROM MyUser WHERE username = '" . $get_username . "' and password = '" . $get_password . "'";
成功
感想
- 此次实验所有代码均为我自己进行书写
- 我从大一开始,为了搞创新竞赛,就从算法和网页两者毅然决然选择了学网页,到现在已经有两个多年头了,这两年学习了HTML CSS Javascript Vue pythonWeb JavaWeb PHP多种语言
- 大一大二的时候还对CTF进行了学习,主攻Crypto和Web,大二国赛sql注入注了一整天都没有注进去,当场退役。
- 对本次实验,我认为比较轻松,把PHP和Javascript进行复习以后就可以做了。对比较简单的sql注入、XSS和CSRF也有一定的了解。
- 本次实验期间,我们小组还进行了汇报,汇报的内容为XSS和CSRF。
- 通过汇报和实验,我巩固了我的Javascript和PHP,并且对XSS sql注入 CSRF有了更深入的学习和体会。