网站首页 > 开源技术 正文
1.1php+Mysql注入的误区
很多人认为在PHP+MYSQL下注入一定要用到单引号,或者是没有办法像MSSQL那样可以使用
"declare@asysnameselect@a=<command>execmaster.dbo.xp_cmdshell@a"这类的命令来消除引号,其实这个是大家对注入的一种误解或这说是对注入认识上的一种误区。为什么呢?因为不管在什么语言里,在引号(包括单双)里,所有字符串均是常量,即使是
dir这样的命令,也紧紧是字符串而已,并不能当做命令执行,除非是这样写的代码:
$command="dirc:";
system($command);
否则仅仅只是字符串,当然,我们所说的命令不单指系统命令,我们这里说的是SQL语句,要让我们构造的SQL语句正常执行,就不能让我们的语句变成字符串,那么什么情况下会用单引号?
什么时候不用呢?看看下面两句SQL语句:
①SELECT*FROMarticleWHEREarticleid='$id'
②SELECT*FROMarticleWHEREarticleid=$id
两种写法在各种程序中都很普遍,但安全性是不同的,第一句由于把变量$id放在一对单引号中,这样使得我们所提交的变量都变成了字符串,即使包含了正确的SQL语句,也不会正常执行,而第二句不同,由于没有把变量放进单引号中,那我们所提交的一切,只要包含空格,那空格后的变量都会作为SQL语句执行,我们针对两个句子分别提交两个成功注入的畸形语句,来看看不同
之处。
①指定变量$id为:
1'and1=2unionselect*fromuserwhereuserid=1/*
此时整个SQL语句变为:
SELECT*FROMarticleWHEREarticleid='1'and1=2unionselect*fromuserwhere
userid=1/*'
②指定变量$id为:
1and1=2unionselect*fromuserwhereuserid=1
此时整个SQL语句变为:
SELECT * FROM article WHERE articleid=1 and 1=2 union select * from user where userid=1
看出来了吗?由于第一句有单引号,我们必须先闭合前面的单引号,这样才能使后面的语句
作为SQL执行,并要注释掉后面原SQL语句中的后面的单引号,这样才可以成功注入,如果php.ini
中magic_quotes_gpc设置为on或者变量前使用了addslashes()函数,我们的攻击就会化为乌有,但第二句没有用引号包含变量,那我们也不用考虑去闭合、注释,直接提交就OK了。
大家看到一些文章给出的语句中没有包含单引号例如pinkeyes的《php注入实例》中给出的那句SQL语句,是没有包含引号的,大家不要认为真的可以不用引号注入,仔细看看PHPBB的代码,就可以发现,那个$forum_id所在的SQL语句是这样写的:
$sql="SELECT*
FROM".FORUMS_TABLE."
WHEREforum_id=$forum_id";
由于没有用单引号包含变量,才给pinkeyes这个家伙有机可乘,所以大家在写PHP程序的时候,记得用单引号把变量包含起来。当然,必要的安全措施是必不可少的。
弈安传媒科技微课堂,每天分享财经资讯,计算机技术知识,人生感悟,创业指导以及各种专业技术知识资料学习交流.移动学习平台、知识分享平台。随时随地的学习,如果你喜欢成长,这里你不容错过的地方.弈安传媒科技培训关注:关注自己成长,分享内容,分享自己的技术,成就未来.
[弈安传媒科技提升自己的平台]请关注:头条号及公众号 弈安传媒科技
猜你喜欢
- 2024-09-11 超实用!手把手教你如何3步进行Web渗透测试!
- 2024-09-11 组一个NVME固态硬盘为核心的NAS-威联通TS264C开箱与使用
- 2024-09-11 网络漫画《XKCD》遭黑客入侵,盗取56万账号?
- 2024-09-11 XAMPP:轻松搭建你的Apache世界(xampp搭建网站)
- 2024-09-11 2016年到2017年的网站优化趋势(2014年网站数量减少的原因)
- 2024-09-11 760万“塞勒姆小镇”玩家个人信息惨遭泄露
- 2024-09-11 10大最受欢迎的Plesk插件(plexus插件如何使用)
- 2024-09-11 高级PHP应用程序漏洞审核技术(高级php应用程序漏洞审核技术实验报告)
- 2024-09-11 linux下wifite无线终端工具详解(wifi linux)
- 2024-09-11 Linux系统之linux命令大全与基本常识基础教程丨致臻数据
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)