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

时间:2015-12-10 03:52:59

标签: mysql sql sql-injection

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

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

SELECT * FROM XXX.USER WHERE user_name='${USERNAME}' AND password='${PASSWORD}'

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

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

SELECT * FROM XXX.USER WHERE user_name='Sayakiss' -- ' AND password='${PASSWORD}'

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

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

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

这可以检查字符p的{​​{1}}位置字符的ascii - 表n的列z的第n行等于x.y或不

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

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

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

1 个答案:

答案 0 :(得分:0)

我相信,攻击者可以进行更新,可能需要表和字段的名称才能正确运行。 我认为查询会像是一样 'Sayakiss'; UPDATE table_name SET field1=new-value1, field2=new-value2 WHERE user_name='Sayakiss'; -- RelevantSome more

相关问题