>백엔드 개발 >PHP 튜토리얼 >关于php sql注入原理

关于php sql注入原理

WBOY
WBOY원래의
2016-06-23 14:28:041030검색

网上看,比如一个URL  www.xx.com/news.php?id=3   这样一个链接,在后面加上一个 ' 符号就报错了,或者是 and 1=1 然后 and 1=2 如果两个返回值不一样就可以判断有注入点,

那比如 www.xx.com/news.php?id=3  这个地方,我的sql是这样的  select * from news where id='3' 在地址栏加一个 ' 符号以后为什么会出错了,and 1=1 和and 1=2 为什么就可以判断有注入点呢,


回复讨论(解决方案)

加上'就报错,不知道提示什么错误,如果加上',传值就当做字符处理,但是如果你开启agic_quotes_gpc为on
引号就被转义,至于and 1 = 1,比如有
SELECT * FROM tbl_users 
WHERE username='zhang3' OR 1=1 #' AND password = 'abc123' LIMIT 0,1
由于 # 是 mysql中的注释符, #之后的语句不被执行,实现上这行语句就成了:
SELECT * FROM tbl_users 
WHERE username='zhang3' OR 1=1
这样攻击者就可以绕过认证了

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.