[MySQL] 当SQL发生注入,能怎样?

2013-04-06 15:07:01 +08:00
 andybest
环境:MySQL5.5

发生注入的SQL:select x_id,x_name from x_user where x_id='这里被注入

在上面这句SQL被注入了,能有什么后果?
黑客并不知道表名(x_user),也不知道查询与返回的字段名(x_id,x_name)

那这种情况下被注入能产生什么危害呢?
比如能dump出全部的表来吗?(我怎么想也做不到)
能删掉数据吗?(没有表名他怎么删?)

请大家就这个例子说说看

回复一定被感谢!
3179 次点击
所在节点    问与答
11 条回复
SonicXP
2013-04-06 15:27:46 +08:00
select x_id,x_name from x_user where x_id='1' union select table_name, column_name from information_schema.columns where table_schema=database();
andybest
2013-04-06 15:47:31 +08:00
@SonicXP 感谢,很有启发,
但是被注入的语句返回的是x_id与x_name这两个字段,那么后面union语句的结果黑客并看不到啊
breeswish
2013-04-06 16:04:00 +08:00
提供一个不专业的解答……: 表名可以猜

另外建议你看下pangolin注入相关
SonicXP
2013-04-06 16:24:54 +08:00
@andybest 这两个字段的数据是要显示在页面上的吧?让第一个select查询结果为空就好了,比如加上where 1=2,第二个select的结果就是第一行了
lichao
2013-04-06 16:51:36 +08:00
如果注入的是 update 或 delete
keakon
2013-04-06 17:17:05 +08:00
select x_id,x_name from x_user where x_id='1'; drop database xxx; --';
andybest
2013-04-06 17:25:03 +08:00
@keakon 除了库被删还有什么可能?似乎黑客都不会做得这么绝吧
emptyhua
2013-04-06 17:40:59 +08:00
不要小巧sql注入。。。,你可以拿sqlmap这个工具自己测试一下就知道了.

python ./sqlmap.py -u "http://mydomain.com/bad.php?id=1" --tables --thread=10

如果mysql的用户权限小就只能dump当前的库,大的话全部库下来没问题。或者只是查一下用户的密码,然后反查一下管理员密码。再往后,基本上安全方面不注意的拿到ssh或3389登录权限不是问题。。。
shiny
2013-04-06 17:46:14 +08:00
N年前研究黑客防线的时候记得,如果权限过大,可以导出文件到指定目录,就可以导出一个木马了。
另外在windows上一些旧版的mysql还能上传dll文件来增加udf函数,相当于一个木马了(新版限制了目录)。

数据库扒光问题不大,但是如果数据很多,再结合社工就比较可怕了。
laoyu
2013-04-06 21:27:19 +08:00
注入问题必须杜绝,不管什么样的注入,都是致命的!
注不到表可以猜,盲住,如果数据库账户权限很大的话整个网站基本都会沦陷。
如果权限较大可以直接导出一句话木马到目录上。
如果权限够好的话,整个服务器就被沦陷了,即使权限小,还是可以利用内核本身或者其他程序来提权,甚至0day!


注入一定得杜绝。如果自己把握不好,可以用类似安全宝之类的程序来拦截。
kopp123
2013-04-07 10:05:17 +08:00
sqlmap -u url 如果权限够直接脱裤。
表名 字段名 数据库名 可以根据系统表解猜。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/65078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX