实验八 Web基础

实验要求

(1)Web前端HTML

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

(2)Web前端javascipt

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

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

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

(5)最简单的SQL注入,XSS攻击测试

功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。

实验原理

1.在Kali-Linux中可以很方便地启停Apache2服务,如果要更方便地进行访问,我们可以先Kill掉占用80端口的进程,这样Apache启动之后就会使用80端口,在访问时就不需要选择端口连接了!

HTML是超文本传输协议,可以在CSS的帮助下制作出一个比较精美的静态网页界面,但是功能有限,如果加入了Java Script代码后,界面就能动态处理一些事态,变得更灵活,用户体验也会更好一点。

HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。所以本质上来讲这两者没有什么区别,视需要使用就好了。

2.JavaScript可以实现一个动态网页,不像静态的、死板的HTML文件,带有JavaScript的JSP文件看起来更加生动。将一段Java代码穿插写在HTML文本中间,不影响HTML本身的作用,限制较少。

3.在后台中一般来说会带一个数据库的软件,我个人用得比较多的是Access,本次试验用到的是mysql数据库,是一个已经内置在Kali-Linux中的一款数据库软件,很省事,如果后台采用Java语言编写的话,需要加载Access驱动后用SQL语言访问Access数据库,存取你想要的数据。不管哪个都是很好用的软件,在命令上都是一样的。

4.后台会在用户提交表单后,将数据进行一些处理,这里面就可以进行登录验证等很多事情,链接数据库也是在这部分实现的。

5.SQL注入:在访问数据库时候,攻击者使用设计好的字段令SQL语言做出其它的、预想之外的操作,以影响数据库的正常工作,达到攻击者篡改、破坏数据的目的。

实验步骤

我们按部就班地按照实验步骤,一点一点做~

首先打开Apache服务,如果有进程在占用80端口一定要Kill掉,然后将自己做好的登录页面置入/var/www/html/这个目录下面,用浏览器查看一下,看看能否正常访问我们置入的文件。

然后打开Kali-Linux自带的mysql服务,进行一些简单配置,更改root用户的密码,更新权限,建立一个test_db数据库,存入我们需要的登录信息。

mysql这块在敲命令行的时候一定要记住:加分号!!!这次被这些分好搞得焦头烂额,不是很习惯……

最后我们使用老师给出的一个login.php文件进行连接,在使用之前要更改用户名、密码使它能访问本机的mysql数据库,还要配合我们制作的HTML页面使得username和password的表单名称可以对应,否则不能正确读取文本框里面输入的信息。

A-oooooooooo!!出错了,这个是我们连接不上数据库的错误提示,我接下来尝试了下面这些操作:

1.新建一个用户

2.进行权限提升

3.更新文件内容

这些操作结束后……并没有解决问题……不过倒是产生了不一样的效果login.php什么都不显示了!Emmmmm…………

这个时候我们要使用一款神器,他叫:别人的电脑!(别问我为什么每次实验都会出现各种各样奇奇怪怪的错误,我也不想啊……)

这个时候发生了一个小插曲(后来觉得这显然比在别人电脑上做成功更靠谱一些):

反正也行不通了。。。不如试一下看看能不能找到某些网站的漏洞emmmm……所以先拿一些做工比较粗糙的网站下手试了试,虽然这些不是很正规的网站看起来有点low,但是游民星空、游侠网、3DM(这个登录信息太多了啊)还有很多关掉就会忘掉的网站,等等这些网站还是可以有效抵挡的,他们会额外检查用户名这块区域的字符合法性,所以很多sql注入的方式会被这层检测拦下来,也不失为一种防御手段,这里面只有游民星空这个网站出现了异样,很久没有登陆反馈,预测产生了一些影响吧,输点别的还是挺正常的。

然后就找了些网友们推荐的可以尝试一下的SQL注入点,这里首先尝试的是testfire的一个页面,简单的username='or 1=1#是不奏效的,我在尝试时在Username字段中输入admin'OR'l,在Password字段中输入test'OR'1,单击Login按钮,你会发现你进入了用户账户!大家都可以试一下,这个网站有故意成为靶机的意思哦!

这个网站攻击原理是将SQL语句改为了SELECT * FROM [users] WHERE username= 'admin' OR '1' AND password='test' OR '1'。是不是很巧妙,不光用户名可以设计,密码字段也可以稍加设计,做到SQL注入,这才使得我们成功进入这个网站的后台。

不知道这样能不能算作一次SQL注入实验呢?

i春秋还提供有SQL注入的更详细的介绍和技巧,可以跟进关注一下!

实验感想

在网上找了非常多的登录界面,尝试使用SQL注入绕开登录认证阶段,但是事实上大部分的网站是无法以现有水平进行攻击的,现在的用户名可能不是使用用户输入的原样,合成SQL语句进行数据库访问,而是进行了一些处理和防范。有些网站会在页面上写入JavaScript进行用户名格式判断,过滤掉不符合要求的用户名格式,用户即使不点提交也会提示格式错误,这样可以在极大程度上避免纯粹的SQL注入设计好的字符直接对数据库进行处理,也是比较廉价的方式,相对应的,这个方式如果使用其它的手段绕过JavaScript检测也是可行的,要斟酌一下这个代价是否划算。还有一种可能带有防范措施,当服务器察觉到传输数据可能造成SQL注入,则会断开连接,使浏览器与网站失去连接,也是比较常见的一种防护措施。再有就是不直接使用用户名进行查找,这个虽然是我自己想的但是很有可能规避SQL注入攻击,将输入的这些字段进行哈希运算,近似一一对应很难撞库暂不考虑这个特殊情况,利用哈希值进行比对;由于密码哈希算法是不可逆的,从哈希值逆运算找到对应的明文计算上不可行,很难找到对应可以SQL注入的明文,所以可以实现SQL注入的防御。

总而言之,本次实验能教给我们的只是需要预防SQL,仅仅做实验达到效果是远远不够的,更需要我们理解原理,想出应对之策,避免自身损失。

实验八 Web基础 SQL注入原理的更多相关文章

  1. 20155201 网络攻防技术 实验八 Web基础

    20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...

  2. 2017-2018-2 20155225《网络对抗技术》实验八 Web基础

    2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...

  3. 20155222卢梓杰 实验八 Web基础

    实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用netstat -tupl ...

  4. 20155235 《网络攻防》 实验八 Web基础

    20155235 <网络攻防> 实验八 Web基础 实验内容 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表 ...

  5. 实验八 Web基础

    实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用 netstat -tup ...

  6. 20155313 杨瀚 《网络对抗技术》实验八 Web基础

    20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...

  7. Web安全之SQL注入(原理,绕过,防御)

    首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要1 schemata:表里包含所有数据库的名字2 tables:表里包含所有数据库的所有的表,默 ...

  8. 讲sql注入原理的 这篇不错(有空可以看看)

    我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  9. 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级

    [web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...

随机推荐

  1. 最清晰易懂的UML类图与类的关系详解

    虚线箭头指向依赖: 实线箭头指向关联: 虚线三角指向接口: 实线三角指向父类: 空心菱形能分离而独立存在,是聚合: 实心菱形精密关联不可分,是组合: 上面是UML的语法. 在画类图的时候,理清类和类之 ...

  2. php程序员招聘

    岗位要求:-1年以上WEB端开发经验.-熟悉PHP语言的开发工作,熟练掌握LNMP开发,并具备良好的编程风格.-熟悉 http协议,掌握css js ajax 相关技术应用.-熟悉关系型数据,NOSQ ...

  3. django2.0无法加载外部css和js的问题

    解决问题的思路来源于https://www.v2ex.com/t/430192 先是创建static目录,该目录与manage.py同级 然后在项目settings.py文件里添加 STATICFIL ...

  4. CEC和ARC介绍

    众所周知,HDMI作为一个数字化视频音频的接收标准,是可以同时传输视频和音频的,当然随着HDMI版本的提升,它的功能也一直在增强.事实上 当HDMI升级到1.3时,人们就发现了HDMI多了一个CEC功 ...

  5. 【easy】226. Invert Binary Tree 反转二叉树

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  6. FizzBuzz

    写一个程序,输出从 1 到 n 数字的字符串表示. 1. 如果 n 是3的倍数,输出“Fizz”: 2. 如果 n 是5的倍数,输出“Buzz”: 3.如果 n 同时是3和5的倍数,输出 “FizzB ...

  7. 根Activity启动过程

    --摘自<Android进阶解密> 根Activity启动过程中会涉及4个进程,分别是Zygote进程.Launcher进程.AMS所在进程(SystemServer进程).应用程序进程, ...

  8. Android-SD卡相关操作

    SD卡相关操作 1.获取 App 文件目录 //获取 当前APP 文件路径 String path1 = this.getFilesDir().getPath(); 当前APP目录也就是应用的这个目录 ...

  9. DWM1000 测距原理简单分析 之 SS-TWR代码分析1 -- [蓝点无限]

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 这一篇内容主要是通过官方源码理解SS-TWR 细节 代码下载链接:https://download.c ...

  10. You must configure either the server or JDBC driver (via the serverTimezone configuration property

    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one ...