Php 有可能在易受攻击的Web应用程序上执行SQL注入(高级)吗?
我搜索了整个谷歌,想知道如何绕过以下内容(来自DVWA的高安全级别): 我想使用PDO,因为它可能更安全。请告诉我你对此的想法Php 有可能在易受攻击的Web应用程序上执行SQL注入(高级)吗?,php,mysql,Php,Mysql,我搜索了整个谷歌,想知道如何绕过以下内容(来自DVWA的高安全级别): 我想使用PDO,因为它可能更安全。请告诉我你对此的想法 事先非常感谢。添加的是数值的不会使这很可能成为全面的sql攻击,但是数值的只是不太准确: $getid = "SELECT first_name, last_name FROM users WHERE user_id = $id" 使用过滤器可能更好: $getid = "SELECT first_name, last_name FROM users WHERE us
事先非常感谢。添加的
是数值的不会使这很可能成为全面的sql攻击,但是数值的只是不太准确:
$getid = "SELECT first_name, last_name FROM users WHERE user_id = $id"
使用过滤器可能更好:
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"
我和你有同样的问题。我也不知道如何破解它
但我想我有一个中等水平的答案,我认为这是程序员的错误
请注意,在低级别和高级别中,您的报价都是$id,而不是中级别…我认为这就是重点。
如果你有这个:
我很确定在中等级别绕过mysql\u real\u转义字符串并不是那么容易的
换句话说,我很确定,如果没有高级别的引号,也可以进行注入。在中等级别,只需使用:1和1=1 orderby X
作者的所有查询都是低级的,但是您可以用十六进制代码替换表名0x…
,例如其中table\u name=0x12345
。如果我们使用字符串字符,我们将有一个错误,因为不允许使用“
。嗨,我的问题是关于该死的易受攻击的Web应用程序,但如果需要,我只是添加了整个代码。谢谢你在说什么水平?它是DVWA特有的吗?是的,它是DVWA特有的。在SQL注入上有不同的安全级别(低、中、高)。低级别没有任何针对SQL注入的保护。中级只有mysql\u real\u escape\u string
,高级在我的帖子中。我也会把媒体的代码放进去,我更喜欢像$id=(int)$\u GET['id']那样进行转换
@RomanNewaza imo最好避免进行很可能不会产生任何结果的查询。
is_numeric('0xdeadbeef') // true
is_numeric('10e3') // true
if (false !== ($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) {
}
$getid = "SELECT first_name, last_name FROM users WHERE user_id = $id"
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"