2019-2020-2 20175329许钰玮《网络对抗技术》Exp8 Web基础

2021-03-06 18:29

阅读:464

YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

标签:length   http   使用   errno   用户输入   连接数据库   NPU   and   搭建   

目录
  • 实验目的
  • 实验内容
    • Web前端HTML
    • Web前端javascipt
    • Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
  • 实验步骤
    • 环境搭建
      • apache2搭建
      • mysql环境搭建
      • php搭建
    • 自己编写一个简单的网站
      • 用HTML写登录表单
      • 用JavaScript处理事件
      • 用PHP编写后台逻辑
      • 最终效果
    • SQL注入: XSS攻击测试
  • 实验问题与回答
    • 问题一:
    • 问题二:
    • 问题三:
  • 实验总结

实验目的

实验内容

  • 操作程序规律
    • 运行脚本或可执行文件
    • 查看配置文件
    • 出错找日志

Web前端HTML

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

Web前端javascipt

  • 理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。

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

  • 最简单的SQL注入,XSS攻击测试
  • 功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。

实验步骤

环境搭建

apache2搭建

  • 使用指令/etc/init.d/apache2 start开启服务
    技术图片
  • 在浏览器里输入localhost查看
    技术图片

mysql环境搭建

  • 因为kali中自带安装了mysql所以我们只需要对其初始化然后运行即可sudo /etc/init.d/mysql start
    技术图片
  • mysql -u root -p启动mysql并输入指令
  • 后面的这些指令就不说了吧,是在之前刘念老师的课上学到过的mysql指令调用哈,不会的就看看我截图指令吧。
    技术图片
  • 建立一个我们所需要的数据库咯
    技术图片
  • 然后插入一条我们的个人信息啦。
    技术图片
  • 在这里前期准备就完成咯。

php搭建

  • service apache2 start是为了搭建接口我们在这里使用php语言需要和mysql数据做一个连接。
  • 然后我们编写几个简单php文件放在/var/www/html下面

技术图片

  • 这样我们就能看见php搭建成功咯

自己编写一个简单的网站

  • 接下来,我们自己简单地写一个网站,只完成最基本的登录功能即可。
  • 我们之前创建了web_db这个数据库,在web_db中添加了users表,并插入了一条数据。
  • 登录的用户名为xuyuwei,口令为20175329。

用HTML写登录表单

  • 首先我们编写前端的登录页面,非常简单。
  • 我们编写一个名叫login.html的登录表单

Welcome

Welcome!




  • 核心部分就是form表单,input标签的name属性是后台php接收参数时要用到的。
  • 是密码框,尽管在屏幕上被隐藏了口令,但不代表传输过程中是安全的。

用JavaScript处理事件

  • 我们编写event.js处理事件。当焦点离开用户名输入框时,如果用户输入的字符少于5个,我们在页面反馈信息,提示用户名不应该少于5个字符。
function checkUsername() {                            
  var elMsg = document.getElementById(‘feedback‘);   
  if (this.value.length 

用PHP编写后台逻辑

  • 我们用PHP处理前端提交的表单。依葫芦画瓢,照搬学长的代码。
  • 下面是login.php
connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

if ($result = $mysqli->query($query_str)) {
    if ($result->num_rows > 0 ){
            echo "

Hello, $username


"; } else { echo "

login failed!!!!


" ; } $result->close(); } $mysqli->close(); ?>
  • 虽然我对PHP一窍不通,但是这段代码的逻辑很容易从字面上理解的。
  • 和Java的JDBC相比,php连接数据库还是挺方便的。
  • 这里故意用字符串拼接的方式构成$query_str查询语句,方便后面的SQL注入。
  • 如果用参数化语句的话,就能大大提高对SQL注入的免疫力。

最终效果

  • 虽然这个网站挺简陋的,但能把原理了解清楚就行。
    技术图片
  • 登陆成功咯
    技术图片

SQL注入: XSS攻击测试

  • XSS本质是脚本的执行,当然不一定是JavaScript,也可以是一段html片段。
  • 我们现在就让网站执行一次弹窗。当然,真正的XSS攻击不会这么简单。
  • 输入‘or 1=1 #
    技术图片
  • 如果成功你就和我弹个窗哈哈哈哈
  • 当然,作为注入的内容,也可以是HTML片段。
  • 比如技术图片,展示图片
    技术图片

实验问题与回答

问题一:

  • 在配置mysql的时候刚刚开始输入指令mysql start的时候被报错
    技术图片
  • 我突然想起来之前启动apache2的时候使用过这个全局初始环境指令然后就在这里试了试,没想到成功了。于是我对这个init.d的作用有点好奇就查了查.
  • 突然发现一个重新配置软件环境的好方法呢。

问题二:

  • 刚刚开始搭建环境的时候,php官方版本写的是安装php5的方法,网上很多嵌套的博客都是安装php5的方法,我在寻思先康康有没有php于是调用了一下whereis php就可以看见
    技术图片
  • 后面我把安装php5的指令更改为php7发现里面的东西都是配置好的只等着使用就ok了,看来kali下面的东西都挺配套的呀。

问题三:

技术图片

  • 刚刚开始做搭环境所有都很顺利但是到了这一步人就傻了,搁置来来回回也有一周多的时间
  • 后面在解答过程中刘老师提供的思路真的太棒了,一下就把困惑我好久的问题迎刃而解了。刘老师说在使用root作为账户的时候需要管理员权限,如果作为数据库连接没有考虑到这个情况所以无论root管理下的账户密码数据库消息是否完全匹配都不一定能连接上,于是让我再建立一个账户,那好呗我就用kali登陆咯。
    技术图片
  • 后面就是我们所预期的实验结果了
    技术图片

实验总结

这次的实验和之前的刘念老师的web课程很多地方都是相似的,知识是相同的,我突然发现在linux下面有成熟的配件搭建环境起来更加直接简单。还记得当时为了搭建刘念老师的web真的是....而且关于1=1这个恒等式刘老师上课也是讲过的,让我再一次对于安全漏洞方面有了更加深入的理解和了解。倒数第二次试验了,说实话...这学期都快结课了...

2019-2020-2 20175329许钰玮《网络对抗技术》Exp8 Web基础

标签:length   http   使用   errno   用户输入   连接数据库   NPU   and   搭建   

原文地址:https://www.cnblogs.com/xyejava/p/12868140.html


评论


亲,登录后才可以留言!