MySQL的注射用GET或POST
我新的SQL注入和我想问一些关于更新语句MySQL的注射用GET或POST
(不问如何防止注入 ......我要求例如如何注入更新语句到SQL注入更新声明)
如果我有一个名为“用户”和列id,Fname,Lname,Ip,性别,日期,签名 表,我用它来更新
mysql_query("UPDATE users SET Fname='$fname', Lname ='".$_GET["lname"]."', Ip ='$ip' ,Sex ='sex' WHERE id='$id'")
您是否可以注入来更新lname的“签名”? 喜欢它是如何工作的?
edit.php?id=1&lname=Boris&lname=' , Signature = '123&ip=123&Sex=1
(它不工作)
你可以参考我在哪里可以在此阅读?我试图寻找SQL注入,但我找不到你怎么可以更新语句内更新
由于您直接将输入注入到查询中而没有任何转义或验证,您基本上可以让用户在您的数据库中运行任何他想要的查询。
例如,在这种情况下,假设您只想让他编辑他的名字。您的查询看起来是这样的:
"UPDATE users SET Fname = '" . $_GET["fname"] . "' WHERE id = ".$_GET["id"];
如果他的投入是这样的: id=1&fname=John
SQL运行以下查询:
UPDATE users SET Fname = 'John' WHERE id = 1
但是,假设他的投入是这样的: id=1&fname=John', email='aaa
然后SQL将运行以下查询:
UPDATE users SET Fname = 'John', email='aaa' WHERE id = 1
刚刚发生的事情是,即使你没有让他更新他的电子邮件。
的几个注意事项:
- 上面的例子是破坏性最小的例子,我与SQL注入的思维, 攻击者可以做更多的恶意行为,包括 黑客攻击你的服务器。
- 即使它是一个无辜的用户,假设他输入
De'wayne
来更改他的名字,您的查询将失败。 - 你让你的用户更新他的细节
id
来自输入 - BAD的想法,他可以选择他想要的任何id,这意味着他有权更新所有用户数据。 - 你不应该使用GET方法来更新/插入东西。只使用GET来获取东西。
伙计我不要使用这个陈述真实... – boris
@boris好吧,没有回答你的问题吗?如果不是,你的问题是什么? – HtmHell
是的,但是您的注入将无法在“$ query =”UPDATE users SET Fname ='“。$ _ GET [”fname“]。”',Lname ='“。$ _ GET [”lname“]。”' ,'ip ='“。$ _ GET [”ip“]。”',Sex ='“。$ _ GET [”sex“]。”'WHERE id =“。$ _ GET [id]; ”only you on you statement。 。例如,如果我的语句是“mysql_query(”UPDATE users SET Fname ='$ fname',Lname ='“。$ _ GET [”lname“]。”',Ip ='$ ip',Sex ='sex'WHERE id ='$ id'“) ”你的注射不起作用 – boris
你是非常正确的,你只是忘记了URL编码,它看起来像:
edit.php?id=1&lname=Boris&lname=Solnich&ip=123&Sex=1%27%20%2C%20Signature%20%3D%20%27123
你的回答是有误导性的,他可能认为SQL注入在他的情况下是不可能的。 – HtmHell
把它直,我可以让这个users'从未存在过的 – Akintunde007
可能的复制表' [我怎样才能防止在SQL注入PHP?](https://*.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – Akintunde007
感谢重播我不认为它的重复.. 和你能给我例子你怎么能“让桌子永远不存在”,请你能告诉我你怎么能更新列喜欢签名,它不在声明中,所以你怎么能更新索姆如果它不在声明中呢? 再次感谢! 编辑:我没有问如何防止SQL注入..我想学习如何注入更新声明工作 – boris