实验八 Web基础 SQL注入原理
实验八 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注入原理的更多相关文章
- 20155201 网络攻防技术 实验八 Web基础
20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...
- 2017-2018-2 20155225《网络对抗技术》实验八 Web基础
2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...
- 20155222卢梓杰 实验八 Web基础
实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用netstat -tupl ...
- 20155235 《网络攻防》 实验八 Web基础
20155235 <网络攻防> 实验八 Web基础 实验内容 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表 ...
- 实验八 Web基础
实验八 Web基础 1.安装apache sudo apt-get install apache2 2.启动apache service apache2 start 3.使用 netstat -tup ...
- 20155313 杨瀚 《网络对抗技术》实验八 Web基础
20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...
- Web安全之SQL注入(原理,绕过,防御)
首先了解下Mysql表结构 mysql内置的information_schema数据库中有三个表非常重要1 schemata:表里包含所有数据库的名字2 tables:表里包含所有数据库的所有的表,默 ...
- 讲sql注入原理的 这篇不错(有空可以看看)
我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级
[web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...
随机推荐
- 【转】Python3 操作符重载方法
Python3 操作符重载方法 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/70769628 以下代码 ...
- QPS/TPS/并发量/系统吞吐量概念和公式
1.概念 我们在日常工作中经常会听到QPS/TPS这些名词,也会经常被别人问起说你的系统吞吐量有多大.一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联,单个req ...
- 【Java】JDK/JVM相关工具
1.JDK自带工具 1)常见的用法参见:https://cloud.tencent.com/developer/article/1379487 2)HSDB,即Hotspot debugger,位置在 ...
- MySQL学习笔记:timediff、timestampdiff、datediff
一.时间差函数:timestampdiff 语法:timestampdiff(interval, datetime1,datetime2) 结果:返回(时间2-时间1)的时间差,结果单位由interv ...
- [转] Vue + Webpack 组件式开发(练习环境)
前言 研究了下别人的 vue 多页面框架, 都是直接复制 package.json 文件,然后在本地 npm install 一下即可, 或者使用官网 vue-cli 工具生成一个项目, 觉得这样虽然 ...
- [慢更]Sublime Text 快捷键及使用过的插件
整理自己常用的sublime text命令和插件 1.pretty json Json 快速格式化,免去url访问json站点的烦恼. 摘自:https://segmentfault.com/a/11 ...
- ssh报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
今天登陆远程主机的时候,出现如下的报错信息 ssh 10.0.0.1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WAR ...
- Ios还是安卓的判断
最近在做app的h5页面,涉及到一些小知识点 记录一下 1.微信屏蔽了下载的链接,所以在网页中添加的下载链接都要在浏览器中打开,这里需要一个提示用户在浏览器打开的提示弹框 //判断是否在微信终端打开 ...
- P1991 无线通讯网 最小生成树
题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...
- rabbitmq重启时报错,并导致erlang崩溃和Rabbit的常用命令
-------------------------------------------------------------------------------------------------- R ...