(1)Web前端HTMLphp
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。html
(2)Web前端javascipt前端
理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。java
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、建立用户、修改密码、建表mysql
(4)Web后端:编写PHP网页,链接数据库,进行用户认证web
(5)最简单的SQL注入,XSS攻击测试算法
功能描述:用户能登录,登录用户名密码保存在数据库中,登录成功显示欢迎页面。sql
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,仅仅作实验达到效果是远远不够的,更须要咱们理解原理,想出应对之策,避免自身损失。