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挑战赛,确实也是有点无从下手。

最新文章

  1. Cannot create file &quot;C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr&quot;
  2. php截取中文字符串乱码问题
  3. C# WebService服务Post提交
  4. C——整型提升
  5. 使用 WordPress 主题制作的20个精美网页
  6. 《数据结构》之串的模式匹配算法——KMP算法
  7. 传引用 C(转)
  8. Storm实战:在云上搭建大规模实时数据流处理系统(Storm+Kafka)
  9. shell 常用正则
  10. 20169212《Linux内核原理与分析》第二周作业
  11. 将表里的数据批量生成INSERT语句的存储过程
  12. Mysql中的触发器
  13. socket网络编程的一些基础知识
  14. bios中断向量表
  15. JQuery实现数组移除指定元素
  16. php BCMath高精度计算
  17. unity3d脚本语言中的引用类型
  18. TML 打印预览问题,怎么设置有些内容不出现在打印预览页面上。怎么控制,有下代码 看得不是很懂 求解释
  19. 【Qt】QLabel实现的圆形图像
  20. MFC 线程中CWnd对象

热门文章

  1. js:语言精髓笔记12--动态语言特性(2)
  2. 简单几何(凸包) POJ 1113 Wall
  3. 【BZOJ】2802: [Poi2012]Warehouse Store(贪心)
  4. 【UOJ】【UR #2】猪猪侠再战括号序列(splay/贪心)
  5. 1^b+2^b+3^b+...+n^b数列
  6. 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)
  7. HNOI2015
  8. COJ500 杨老师的路径规划(MST) (我是认真的)
  9. Linux(Redhat)下redis安装
  10. Shell 小技巧的问题 mysql -e ,字符串替换telnet命令检测