相关疑难解决方法(0)

PHP的PDO可以限制为单个查询吗?

PHP的PDO允许一次执行多个查询,可以通过query()方法或作为预准备语句执行.以下两个示例均有效:

// Two SQL queries
$query = "SELECT * FROM table; DROP table;"

// Execute via query()
$pdo->query($query);

// Execute via prepared statement
$stmt = $pdo->prepare($query);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

有没有办法一次将PDO限制为单个查询,就像mysql_query()函数一样?

php mysql pdo sql-injection

6
推荐指数
2
解决办法
1100
查看次数

可以在 WHERE 中执行 UPDATE 子句吗?

我正在学习 SQL 注入,并且构建了一个没有 SQL 注入保护的 Web 应用程序(PHP + MYSQL(5.6))。

简而言之,我的 Web 应用程序使用

SELECT * FROM XXX.USER WHERE user_name='${USERNAME}' AND password='${PASSWORD}'
Run Code Online (Sandbox Code Playgroud)

处理登录(如果该 sql 仅返回 1 行,则登录成功)。

一开始,我发现输入 USERNAMESayakiss' --然后我的 SQL:

SELECT * FROM XXX.USER WHERE user_name='Sayakiss' -- ' AND password='${PASSWORD}'
Run Code Online (Sandbox Code Playgroud)

通过这种方式,攻击者可以在Sayakiss没有密码的情况下登录。

然后我发现了一些更有趣的东西(select子句可以在if函数中)——攻击者输入 USERNAME 作为

Sayakiss' and if((select ascii(mid(z,p,1)) from x.y limit n,1)=c,1,0) -- 
Run Code Online (Sandbox Code Playgroud)

这可以检查字符表的列的第 -th 行p位置的字符的 ascii 是否相等。nzx.yc

如果攻击者登录成功,则他知道字符的 ascii 等于c

所以攻击者可以通过枚举获取我数据库的所有内容!

现在我想知道,如何(如果可能的话)以类似的方式执行更新查询以写入数据库?

mysql sql sql-injection

5
推荐指数
1
解决办法
76
查看次数

标签 统计

mysql ×2

sql-injection ×2

pdo ×1

php ×1

sql ×1