博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用SQL注入漏洞拖库
阅读量:7113 次
发布时间:2019-06-28

本文共 1524 字,大约阅读时间需要 5 分钟。

想在本地测试的话,可以在此免积分下载:

同上一篇文章()一样,我们需要创建数据表,并在表中出入几条数据以备测试之用。

在数据库中建立一张表:

CREATE TABLE `article` (   `articleid` int(11) NOT NULL AUTO_INCREMENT,   `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '',   `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`articleid`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

在表中插入数据的操作我就不贴代码了,可以去下载下来直接导入到数据库。

接下来,写一个处理用户请求的页面,这里,我们故意不过滤用户提交过来的数据,留下个SQL注入漏洞用来测试。

代码如下:

利用SQL注入漏洞拖库

"; if (!$row){

echo "该记录不存在"; exit; } echo "标题
".$row['title']."

"; echo "内容

".$row['content']."

"; ?>

我们直接在浏览器中输入:

即可访问article表中id为1的一条记录

访问结果如下:

 

接下来,我们就利用这个漏洞(不知道该漏洞的情况下,只能通过工具+手工检测),演示一下如何将article表下载下来。

在地址栏中输入:’ into outfile 'e:/sql.txt'%23

分析:%23是#的ASCII码,由于在地址栏中直接输入#后到数据库系统中会变成空,需要在地址栏中输入%23,那么才会变成#,进而注释掉后面的sql语句。

运行之后,打开E盘,发现多了一个sql.txt文件,打开之后,里面就是表article中的一条记录。

为什么只有一条记录呢?难道该数据表就只有一条记录?不是这样的,因为我们只检索id为1的一条记录而已,那么能否将article表中的所有记录一次性全部下载下来呢?

答案是可以的,只要你的构造的SQL语句足够灵活(再次提出了构造SQL语句的灵活性)。

 

       分析一下,当在URL地址栏中输入’into outfile 'e:/sql.txt'%23的时候,合并到sql查询语句中变为:

 

       SELECT * FROM article WHERE articleid='5' into outfile 'e:/whf.txt'#'

 

       仔细分析下之后,我们可以这样子构造SQL语句:

 

       SELECT * FROM article WHERE articleid='' or 1=1 into outfile 'e:/whf.txt'#'

 

      这样的话,无论如何WHERE子句总是为真,换句话说,该sql语句等价于如下:

 

      SELECT * FROM article into outfile 'e:/whf.txt'#'

 

      懂了吧,该sql语句在先执行select语句,将表article中的所以内容全部检索出来,然后再执行into outfile 'e:/whf.txt'#'将内容导出来。

 

      不信的话,你执行下……

 

      利用SQL注入漏洞,我们可以猜测表名,列名,用户的密码长度(LEFT函数)等等,当然了,如果能直接向以上的演示那样将表中的数据全部导出的话就没必要去猜表名列名等等。

 

      有点累了,就写到这里了。

      是我学习了相关内容之后的一点小结,没啥深度,正如文章开头所说,权当总结,别无它意。

原创文章:

转载请注明:

你可能感兴趣的文章
数学百家
查看>>
nginx实现单服务代理多域名
查看>>
解压缩
查看>>
Docker镜像的获取与删除
查看>>
Vrrp协议
查看>>
项目中js调用service和procedure的办法
查看>>
用友UAP
查看>>
Tomcat error: A child container failed during start
查看>>
jquery 时间戳和日期时间转化
查看>>
Codeforces Round #370 (Div. 2) C. Memory and De-Evolution 水题
查看>>
MySQL数据备份之mysqldump使用
查看>>
mysql中根据一个字段相同记录写递增序号,如序号结果,如何实现?
查看>>
sql STUFF用法
查看>>
fdisk 分区
查看>>
别说无所谓
查看>>
irb的子会话 - 相思雨 - 博客园
查看>>
python 网络编程
查看>>
aspx 页面数据绑定 前台数据绑定
查看>>
《推荐系统实践》样章:如何利用用户标签数据
查看>>
U-Boot Makefile文件分析
查看>>