微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

网络与系统攻防技术|实验八 Web安全

网络与系统攻防技术

实验八 Web安全

dky 20192414 袁浩然


实践目标

  • Web前端HTML
    • 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
  • Web前端javascipt
    • 理解JavaScript的基本功能,理解DOM。
    • 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名
    • 尝试注入攻击:利用回显用户名注入HTML及JavaScript。
  • Web后端
  • 最简单的sql注入,XSS攻击测试
  • 安装Webgoat或类似平台,并完成sql注入、XSS、CSRF攻击。

实验步骤

实验一 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

  • 在进行XSS和CSRF演示汇报时,使用了pikachu网站。在搭建pikachu时,使用了PHPstudy_pro软件(国产化xampp),集成了Apache。

  • 编写一个表单输入用户名和密码的HTML

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

  • 代码如图

  • 代码解析如下

    • form表单负责提交用户输入的用户名和密码。点击提交按钮,通过表单的onsubmit属性进入函数validateForm
    • x和y分别读取表单的用户名和密码,通过规则进行判断。
    • 因为不与后端相通信,则必须return false,否则会引起页面跳转
  • 演示如下:

实验三 尝试注入攻击:利用回显用户名注入HTML及JavaScript

  • 因为我们将HTML内容进行替换,则可以进行HTML和Javascript的注入攻击。

  • 注入攻击代码演示如下

  • 注入HMTL

  • 注入Javascript

    • 用户名填写为<script>alert(1);</script>

    • 按说会执行alert(1)进行弹窗,但是由于return false,没有进行重新加载,则JavaScript不会执行,导致失败。

    • 替换后的网页

MysqL基础:正常安装、启动MysqL,建库、创建用户修改密码、建表

编写PHP网页,连接数据库,进行用户认证

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

  • PHP脚本为我自己书写,没有防止sql注入和XSS注入。

  • sql注入

    • 用户名设置为' or 1 =1 #则可以成功注入


    • 用户名设为root,密码设为' or 1 =1 #万能密码)则可以成功利用管理员身份登陆网站


  • html注入

    • 同理,利用直接显示代码可以将用户名设为<h1>我是20192414</h1>,密码使用万能密码(' or 1 =1 #)成功注入HMTL代码


  • JavaScript注入

    • 同理,利用直接显示代码可以将用户名设为<script>alert(1);</script>,密码使用万能密码(' or 1 =1 #)成功注入JavaScript代码,成功弹窗。


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

  • 本实验使用pikachu平台进行练习

sql注入

数字型注入
  • 页面如下

  • 随便查询3,发现id=3

  • 如果查询语句为where id = 3,则后面添加or 1 = 1,则where为永真式。

  • 注入成功,查询到所有的信息

字符型注入
  • 页面如下

  • 搜索用户名为1,显示不存在

  • 如果查询语句为 where id = '$_POST["username"]',则输入' or 1 =1#,语句变为 where id = '1' or 1 = 1,为永真式。

  • 查询成功!

搜索型注入
  • 页面如下

  • 输入' or 1 =1#,注入成功

xx型注入
  • 页面如下

  • 输入' or 1 =1#,注入失败

  • 猜测查询语句为 where id = ('$_POST["username"]'),则注入') or 1 =1#

  • 成功!

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无法正常启动

  • 查看3306端口占用,如果占用,从配置文件中更改端口
  • 如果还无法使用(比如说我),则需要卸载掉本机已经有的MysqL数据库,这样可以正常使用

Javascript和PHP不熟练

  • 虽然我有一定的基础,很久很久以前学过PHP和Javascirpt,但是已经忘得差不多了
  • 重新自学,学会了很多语言,再学其他的语言不难了

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有了更深入的学习和体会。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐