SQL注入实践

由于《黑客大曝光》中涉及到形形色色的攻击方式,从软件到硬件,甚至还有物理锁的开锁教程,当中的很多教程很有趣,但是我没有相关的环境,实践起来不好操作,比如说,查点扫描我还可以查找到一些东西,但是真的做到攻击这一步,很多操作就不太好执行了,虽说攻击成功的概率不大,但是万一成功了,是否违法也是个问题。所以,我想从相关的实验网站上找一些配置好的环境做一下相关的实验。

这次我选择了,书中提高的sql注入攻击进行尝试,我在实验楼里,找到了一个实验环境,进行12关的sql注入闯关。

一、环境搭建

启动mysql:

sudo mysqld_safe 
注意启动后程序不会退出,可以打开新的终端执行后续命令。

启动Apache:

sudo service apache2 start

密码:dees

配置DNS:

sudo vim /etc/hosts

配置网站文件:

sudo vim /etc/apache2/conf.d/lab.conf
sudo service apache2 restart 重启服务

lab.conf文件代码:

<VirtualHost *>
ServerName http://www.sqllabcollabtive.com
DocumentRoot /var/www/SQL/Collabtive/
</VirtualHost>

访问测试:

http://www.sqllabcollabtive.com 图片描述信息

用户名:admin;密码:admin

关闭php配置策略:

sudo vim /etc/php5/apache2/php.ini

把magic_ quotes_ gpc=On 改为 magic_ quotes_ gpc = Off

关于magic_ quotes_ off函数:

  • 对于magic_ quotes_ gpc=on的情况,我们可以不对输入和输出数据库的字符串数据作addslashes()和stripslashes()的操作,数据也会正常显示;

  • 如果此时你对输入的数据作了addslashes()处理,那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。 对于PHP magicquotesgpc=off 的情况

  • 必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出,因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

二、select语句的sql注入

访问:www.sqllabcollabtive.com;当我们知道用户而不知道到密码的时候,我们可以怎么登陆?

  • 查看登陆验证文件:

    sudo vim /var/www/SQL/Collabtive/include/class.user.php

设置行号 :set number 
查找 :/keyword

找到其中第375行

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, FROM user WHERE (name = '$user' OR email = '$user') AND pass = '$pass'");

这一句就是我们登录时,后台的sql语句;我们可以构造一个语句,在不知道密码的情况下登陆;

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, FROM user WHERE (name = '$user') #' OR email = '$user') AND pass = '$pass'");

修改完后重启一下服务器:

sudo sudo service apache2 restart

  • 我们在$user后面加上) # 这样就会只验证用户名,后面的会被#注释

点击登陆以后,我们就可以绕过密码直接登录:

思考:

上述的SQL语句是一个查询只陈述,并且不能更新数据库。但是,使用SQL注入,你可以把上面的语句分割为两个语句,后面是更新语句。

请试试这个方法,看看是否可以成功地更新数据库? 
答案:

登陆用户名:

admin') union update user set name='test' # 登陆密码:随意的字符

登陆失败

其实,我们都无法达到更新的目标。这是因为在MySQL中实现的特定的防御机制。在MySQL中阻止这种攻击,是因为MySQL机制:update不支持union语法。

总结:

  • 目前,我接触的sql注入就是修改查找、更新等操作代码里的相关语句,共同的思路是将需要密码验证等机制的语句注释掉,已达到越权访问的目的,以达到不需要密码直接访问的效果。
  • 我知道这次的实践部分只是sql注入的冰山一角,sql注入是一个很有趣内容,白帽学院的相关挑战赛也是很有趣的,只是我尝试了很久,还是不没有get到突破点,所以我采用了曲线救国策略,先做一些简单基础的实验,入个门,然后在去挑战一下挑战赛。
  • 我发现关于sql注入的实验平台,还不是很多。像实验楼这样的带指导性的实验平台,可能更适合我这样的初学者。如果直接进入白帽学院的sql挑战赛,确实也是有点无从下手。

《黑客大曝光》实践部分——sql注入(7/8)的更多相关文章

  1. DOS/Windows下黑客攻防(一)——神秘黑客大曝光

    一.认识神秘的黑客 谈到网络安全,人们不自觉间就会联想到黑客,人们往往会将他们同破坏网络安全.盗取用户账号.偷窃个人私密信息联系起来.其实黑客也有好坏之分,他们并不全是网络上的捣乱分子,其中也有一部分 ...

  2. [极客大挑战 2019]BabySQL-1|SQL注入

    1.打开题目之后,查看源代码信息,发现check.php文件,结果如下: 2.那就只能尝试登录,经测试当输入or.by.select.from.and.where等关键字时会被过滤且会被过滤为空(过滤 ...

  3. 网络对抗课题4.3.1 SQL注入原理与实践

    网络对抗课题4.3.1 SQL注入原理与实践 原理 SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞.也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符 ...

  4. 20169214 2016-2017-2 《网络攻防实践》第十一周实验 SQL注入

    20169214 2016-2017-2 <网络攻防实践>SQL注入实验 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表 ...

  5. 【转载】以Java的视角来聊聊SQL注入

    以Java的视角来聊聊SQL注入 原创 2017-08-08 javatiku Java面试那些事儿 在大二就接触过sql注入,之前一直在学习windows逆向技术,认为web安全以后不是自己的从业方 ...

  6. MySQL防范SQL注入风险

    MySQL防范SQL注入风险 0.导读 在MySQL里,如何识别并且避免发生SQL注入风险 1.关于SQL注入 互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低.成本 ...

  7. 重新学习MySQL数据库11:以Java的视角来聊聊SQL注入

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  8. web攻击与防御技术--SQL注入

    sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...

  9. 防止SQL注入总结

    1.预编译(占位符)可以很大程度上防止SQL注入 预编译的原理是数据库厂商提供的JAR包中,对参数进行了转义 2.mybatis中,能用# 的地方,不用$,因为#是预编译占位符形式,可以防止SQL注入 ...

随机推荐

  1. 【转】Hadoop集群添加磁盘步骤

    转自:http://blog.csdn.net/huyuxiang999/article/details/17691405 一.实验环境 : 1.硬件:3台DELL服务器,CPU:2.27GHz*16 ...

  2. javascript的window.onload()方法和jQuery的$(document).ready()的对比

    jQuery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 windo ...

  3. Android view 的事件分发机制

    1 事件的传递顺序是 Activity -> Window -> 顶层View touch 事件产生后,最先由 activity 的 dispatchTouchEvent 处理 /** * ...

  4. C#多线程与异步的区别

    随着拥有多个硬线程CPU(超线程.双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论.本文主要是想与园中各位高手一同探讨一下如何使用并发来最大化程序的性能. 多线程和异步操作的异 ...

  5. HTTP请求中的User-Agent 判断浏览器类型的各种方法 网络爬虫的请求标示

    我们知道,当用户发送一个http请求的时候,浏览的的版本信息也包含在了http请求信息中: 如上图所示,请求 google plus 请求头就包含了用户的浏览器信息: User-Agent:Mozil ...

  6. hdu-acm steps FatMouse's Speed

    本想用暴力法先试试的,案例和自己找的数据都过掉了,但是始终wa,本来期待的是tle,结果始终wa.所以也就懒的管了,直接用dp来做了.主要是因为最近在刷暴力法和dp这两个专题,所以才想好好利用一下这道 ...

  7. kail-linux 安全之旅

    一些学习网站 http://xiao106347.blog.163.com/blog/static/2159920782013111995945233/ http://xiao106347.blog. ...

  8. 服务器文件系统一定要用NTFS格式。

    网络中心通过ADSL接入Internet(固定的IP地址), 网站服务通过端口映射放到了内网的两台计算机上,一台IP地址为122.9.6.1,提供Web.FTP.POP3与SMTP服务:另一台IP地址 ...

  9. [转]C#基础回顾:Asp.net 缓存

    本文转自http://www.cnblogs.com/stg609/archive/2009/03/22/1418992.html 缓存的作用      你买电脑的时候,是否会在意CPU的二级缓存?是 ...

  10. OpenSSL使用方法

    生成CA (勾选Generate Self Signed Certificate)openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout & ...