小编典典

来自“ Bobby Tables” XKCD漫画的SQL注入如何工作?

sql

此SQL的作用是:

Robert’); DROP TABLE STUDENTS; –
我知道这两个’和–是征求意见,但不字DROP得到的评论,以及因为它是在同一行的一部分吗?


阅读 169

收藏
2021-04-16

共1个答案

小编典典

学校程序中的原始代码可能看起来像

q = "INSERT INTO Students VALUES ('" + FNMName.Text + "', '" + LName.Text + "')";

如您所见,这是将文本输入添加到查询中的简单方法,并且非常糟糕。

在将名字,中间名称文本框FNMName.Text(即Robert'); DROP TABLE STUDENTS; –)和姓氏文本框LName.Text(即称为Derper)的值与查询的其余部分连接在一起之后,结果实际上是两个查询,中间用语句终止符(分号)。第二个查询已注入到第一个查询中。当代码对数据库执行此查询时,它将看起来像这样

INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --', 'Derper')

用简单的英语粗略地翻译成两个查询:

向“学生”表中添加一个名称为“ Robert”的新记录

删除学生表

第二个查询之后的所有内容都标记为注释: –‘, ‘Derper’)

将’在学生的名字是不是一个评论,它的关闭字符串分隔符。由于学生的名字是一个字符串,因此在语法上需要它来完成假设的查询。注入式攻击仅在其将有效查询SQL注入结果的SQL查询时起作用。

2021-04-16