Jen*_*rer 3 php sql sql-injection
我试图在PHP中证明需要准备好的语句,但是我遇到了一些问题,因为PHP通过表单传递字符串来做一些方便的奇怪事情.
我试图"破解"的陈述很简单:
SELECT username FROM users WHERE username = '$username' AND password = '$password'
但是做一些像X' or TRUE;--输入密码的东西实际上并不起作用,因为PHP会自动转义单引号并将语句转换为:
SELECT username FROM users WHERE username = '$username' AND password = 'X\' or TRUE;--'
由于单引号转义,密码相等性保持不变.这种说法是否安全?如果没有,它怎么能被打破?
听起来你有魔术引号打开.我肯定不会认为该语句是安全的,就好像你将它移动到运行PHP 5.4的服务器一样,它将完全容易受到攻击.魔术引号长期以来一直被弃用,它可能会破坏应用程序的其他部分,所以不要依赖它.
要演示,只需magic_quotes_gpc = Off在php.ini中设置即可.