步骤1:Web前端环境搭建与表单制作。
打开Kali终端,输入命令systemctl start apache2启动Apache服务。使用vi /var/www/html/2427_test.html创建文件,编写HTML代码,设置表单方法为POST,添加账号与密码输入框,ID分别为username和password,并设置一个onclick事件绑定login()函数的登录按钮。在浏览器访问http://127.0.0.1/2427_test.html验证页面显示正常。
步骤2:JavaScript验证与注入测试。
在HTML文件头部添加<script>标签,编写login()函数:获取输入值,若为空则弹窗提示;若密码不等于"20222427"则报错;否则使用document.body.innerHTML回显"Welcome"信息。在账号框输入<h1>xwt</h1>测试HTML注入,输入<script>alert("xwt")</script>测试JS注入。若后者无法执行,修改代码为document.write(),确认成功弹出警告框。
步骤3:MySQL数据库的安装与配置。
在终端输入systemctl start mysql启动数据库。执行mysql -u root -p登录,依次输入create database 20222427xwt;创建数据库,use 20222427xwt;切换数据库。执行create table user (username VARCHAR(30),password VARCHAR(20));建表,使用insert into user values('xwt','20222427');插入数据。最后执行GRANT ALL PRIVILEGES ON 20222427xwt.* TO 'xwt'@'%';并FLUSH PRIVILEGES;完成授权。
步骤4:编写PHP后端连接数据库。
使用vi /var/www/html/2427.php创建PHP文件。配置$servername为localhost,$dbname为20222427xwt。使用new mysqli建立连接,检查connect_error。获取POST参数,构建SQL语句SELECT * FROM user WHERE username = '$username' AND password = '$password'。执行查询,若num_rows > 0则输出“登陆成功”,否则输出错误。修改HTML表单action指向2427.php,输入用户名xwt和密码20222427验证认证成功。
步骤5:SQL注入与XSS攻击测试。
在自建登录框账号处输入'or 1=1 #,密码随意,成功登录显示欢迎信息,验证了SQL注入漏洞。在账号处输入<script>alert("xss")</script>,成功触发弹窗,验证了XSS漏洞。
步骤6:WebGoat平台综合攻击。
下载webgoat.jar并传入Kali,执行java -jar webgoat-2023.8.jar启动。访问http://localhost:8080/WebGoat/login。
Smith' or '1'='1,构造永真式获取所有用户数据。<script>alert("20222427XSS")</script>,成功弹出提示框。http://127.0.0.1:8080/WebGoat/csrf/basic-get-flag。访问该HTML并点击提交,获取flag值35605,输入平台验证通过。实验结果
本次实验成功搭建了包含前端HTML/JS、后端PHP及MySQL数据库的完整Web应用系统。前端实现了输入验证与DOM操作,能够回显欢迎信息并响应HTML及JavaScript注入测试。后端成功连接数据库,依据查询结果实现了正确的用户身份判断。在漏洞测试环节,利用'or 1=1 #成功绕过自建系统的登录验证;在WebGoat平台上,通过构造特定的SQL语句、XSS脚本及伪造CSRF HTML请求,均触发了预期的攻击效果,成功获取了系统数据与Flag值,验证了各项漏洞的存在。
个人收获 通过本次实验,我不仅掌握了Web开发的全栈基础流程,更深刻理解了常见Web安全漏洞的底层原理。对于SQL注入,我明白了通过构造特殊闭合符号改变SQL逻辑的危险性,认识到了参数化查询的重要性。对于XSS,我清楚了它是如何利用浏览器对恶意脚本的信任执行攻击。对于CSRF,我理解了用户身份被隐式劫持的过程。这些实战经验让我意识到,在编写代码时必须严格过滤用户输入,对数据进行转义处理,从而构建更加安全的Web应用。
本文作者:Linxiong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!