实验八 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. TCP-IP详解笔记7

    TCP-IP详解笔记7 TCP: 传输控制协议(初步) 使用差错校正码来纠正通信问题, 自动重复请求(Automatic Repeat Request, ARQ). 分组重新排序, 分组复制, 分组丢 ...

  2. 转:对UI自动化测试的一些感悟

    不断发掘自动化测试对各个团队的附加价值,这样才能得到来自四面八方的支持,没有将自动化加入项目过程的自动化都达不到预期的效果. UI自动化框架 把UI自动化框架设计成一个拼图性质的架构.把每个特性都设计 ...

  3. SpringBoot入门基础

    目录 SpringBoot入门 (一) HelloWorld. 2 一 什么是springboot 1 二 入门实例... 1 SpringBoot入门 (二) 属性文件读取... 16 一 自定义属 ...

  4. nmap简介和使用

    文章链接:https://blog.csdn.net/m1585761297/article/details/80015726 参考链接:https://www.cnblogs.com/nmap/p/ ...

  5. LQFP(未整理完成)

    注意:文中所提供的链接有可能会失效.不定期维护,如有异常,期待指正,谢谢! LQFP48 7 x 7 mm 图片来源:https://www.st.com/resource/en/datasheet/ ...

  6. Swift - use Array

    //数组声明 var arr0 = Array<Int>() var arr1 = Array<String>(count: 3, repeatedValue: "& ...

  7. BZOJ3257 [Zjoi2014]力 多项式 FFT

    原文链接http://www.cnblogs.com/zhouzhendong/p/8762639.html 题目传送门 - BZOJ3527 题意 给出长度为$m$的序列$q_{1..m}$,让你输 ...

  8. 新世界主机_XenServer7.0都有哪些优势?

    新世界主机VPS全部都采用了Xen硬件虚拟化技术,每个用户都能够独享资源,一键就可以创建和重装VPS,每个VPS都拥有足够的带宽,保证顺畅运行(http://m.0830mn.com). 新世界主机使 ...

  9. 在使用mysql8.0的时候遇到的密码链接问题

    问题概述 SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client SQLSTAT ...

  10. 转载博文: Py西游攻关之IO model

    Py西游攻关之IO model 转载:https://www.cnblogs.com/yuanchenqi/articles/5722574.html 事件驱动模型 上节的问题: 协程:遇到IO操作就 ...