《黑客大曝光》实践部分——sql注入(7/8)
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)的更多相关文章
- DOS/Windows下黑客攻防(一)——神秘黑客大曝光
一.认识神秘的黑客 谈到网络安全,人们不自觉间就会联想到黑客,人们往往会将他们同破坏网络安全.盗取用户账号.偷窃个人私密信息联系起来.其实黑客也有好坏之分,他们并不全是网络上的捣乱分子,其中也有一部分 ...
- [极客大挑战 2019]BabySQL-1|SQL注入
1.打开题目之后,查看源代码信息,发现check.php文件,结果如下: 2.那就只能尝试登录,经测试当输入or.by.select.from.and.where等关键字时会被过滤且会被过滤为空(过滤 ...
- 网络对抗课题4.3.1 SQL注入原理与实践
网络对抗课题4.3.1 SQL注入原理与实践 原理 SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞.也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符 ...
- 20169214 2016-2017-2 《网络攻防实践》第十一周实验 SQL注入
20169214 2016-2017-2 <网络攻防实践>SQL注入实验 SQL注入技术是利用web应用程序和数据库服务器之间的接口来篡改网站内容的攻击技术.通过把SQL命令插入到Web表 ...
- 【转载】以Java的视角来聊聊SQL注入
以Java的视角来聊聊SQL注入 原创 2017-08-08 javatiku Java面试那些事儿 在大二就接触过sql注入,之前一直在学习windows逆向技术,认为web安全以后不是自己的从业方 ...
- MySQL防范SQL注入风险
MySQL防范SQL注入风险 0.导读 在MySQL里,如何识别并且避免发生SQL注入风险 1.关于SQL注入 互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低.成本 ...
- 重新学习MySQL数据库11:以Java的视角来聊聊SQL注入
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
- web攻击与防御技术--SQL注入
sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...
- 防止SQL注入总结
1.预编译(占位符)可以很大程度上防止SQL注入 预编译的原理是数据库厂商提供的JAR包中,对参数进行了转义 2.mybatis中,能用# 的地方,不用$,因为#是预编译占位符形式,可以防止SQL注入 ...
随机推荐
- PHP API 框架开发的学习
基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用.对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户.开发者和中小网站带来了更大的 ...
- js:语言精髓笔记5----语言分类
计算模型:源于对计算过程的不同认识: 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 2.基于程序本质分类: //编程的经典法则 ...
- Redis Key 命令
Redis Key 命令 del key1 key2 - keyn 删除键为key1,key2-keyn,空格分隔. persist key 移除给定 key 的生存时间,将这个 key ...
- LightOJ1382 The Queue(树形DP)
题目大概是说给一棵树的n个结点从1到n编号,要求每个结点的编号大于其父结点,问有多少种编号方式. 想了挺久的,感觉有点眉目,最后画了下样例YY出解法: 首先求出以每个结点为根的子树大小,记为size[ ...
- 2015ACM/ICPC亚洲区长春站 G hdu 5533 Dancing Stars on Me
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 今年暑假不AC[HDU2037]
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- java中的日期转换
在java中有两种Date对象,一种是java.sql.Date,另一种是java.util.Date 一.java.sql.Date对象: 这种Date对象使用了进行数据库操作的,它对应了数据库中的 ...
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
- CreateFeatureClass 异常,尝试读取或写入受保护的内存 Access
在创建要素时出现如下异常,百思不得其解. 后经过多次试验,发现文件名改为其他的就可以了.自出的文件名为"第3条",后将文件名改为"A3"等,则可正常创建. 后再 ...
- hdu Bone Collector
入门级动态规划 #include"iostream" #include"string.h" #include"stdio.h" using ...








