在sql-labs中的Less 23关发现了一个神奇的现象:
使用order by函数判断列时,只能使用;%00进行注释,不能使用and''='进行闭合,否则order by语句无效,因为order by只能出现在闭合之后。
后来我又试了一下union select函数使用and''=',发现更令人费解的现象,回显了,但位置与;%00位置不同。
而且and''='回显的位置竟一个不能用。
在DVWA的命令行注入中:
输入ip地址后可以用&&拼接当前操作系统命令,提交后会一并被执行。
命令行注入与SQL注入的区别:
命令行注入是操作系统命令。
SQL注入是数据库命令。
相对而言,命令行注入危险性较大。
命令行注入时首先查看目前的权限,在DVWA中默认权限是apache用户,所以权限仅次于管理员。
DVWA在安装运行时会默认创建一个用户,来满足自身服务运行的需要。
如何防止命令行注入在运行时调用shell_exec这种的系统命令:
- 可以在php的配置文件中的314行添加禁用函数来禁止调用,从而防止命令行注入。
- 可以在php配置文件中将985行的安全模式打开,默认禁用一些系统命令,从而防止命令行注入。
作业任务:
SQL注入如何防御?
思路?
代码样例?