《黑客大曝光》实践部分——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注入 ...
随机推荐
- 介绍开发Android手持终端PDA盘点APP软件
介绍开发Android手持终端PDA盘点APP软件 软件需要自动识别我导入的TXT格式或者excl格式的盘点表,然后自动生成一个复盘数据,做AB比对,界面上需要显示的有总数量,单品数量,条码,编码,商 ...
- LianLianKan[HDU4272]
LianLianKan Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- BZOJ4289 : PA2012 Tax
一个直观的想法是把每条边拆成两条有向边,同时每条有向边是新图中的一个点.对于两条边a->b与b->c,两点之间连有向边,费用为两条边费用的最大值.然后新建源点S与汇点T,由S向所有起点为1 ...
- Java虚拟机(JVM)中的内存设置详解
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步. PermGen space:全称是Permanent Generation ...
- LeetCode-Repeated DNA Sequences (位图算法减少内存)
Repeated DNA Sequences All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, ...
- swift文件上传及表单提交
var carData:NSMutableDictionary = NSMutableDictionary(); var request:NSMutableURLRequest = NSMutable ...
- Layui - 示例
示例地址 http://www.layui.com/demo/ 下载地址 http://www.layui.com/ 示例代码 <!doctype html> <html> & ...
- java 遍历文件夹里的文件
Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- 移动端单页视图库,适用于制作移动Web touchbox
ouchBox 原文:https://github.com/maxzhang/touchbox 移动端单页视图库,适用于制作移动专题 DEMO http://jsbin.com/vatuma/late ...








