设为首页 收藏本站
查看: 1052|回复: 0

[经验分享] PHP代码审计小计

[复制链接]

尚未签到

发表于 2018-12-24 07:08:00 | 显示全部楼层 |阅读模式
  0x01 工具篇
  编辑器(notepad++,editplus,UE等等,看个人习惯)
  TommSearch(字符串检索) || grep
  HttpProtocolDebugger(http协议调试器)
  Fiddler(分析包,改包)
  Seay PHP代码审计工具(php-code-audit分析辅助)
  几个有趣的项目
  dvwa(代码审计测试平台)
  phpmvs
  php security audit check
  PHP Vulnerability Hunter
  0x02 函数篇
  addslashed()添加反斜杠
  stripslashed()去掉反斜杠
  get_magic_quotes_gpc() 判断是否开启gpc
  expode(".",$array)分割成数组
  is_numeric()判断是否为数字
  sizeof()判断长度
  trim() 去除字符串开头和末尾的空格或其他字符
  system() 输出并返回最后一行shell结果。
  exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
  passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
  EscapeShellCmd(),把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号(;),重定向(>)和从文件读入 ( (大于) 成为 >
  move_uploaded_file() 函数将上传的文件移动到新位置。
  extract() 函数从数组中把变量导入到当前的符号表中。
  对于数组中的每个元素,键名用于变量名,键值用于变量值。
  第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
  本函数返回成功设置的变量数目。
  语法
  extract(array,extract_rules,prefix)
  parse_str() 函数把查询字符串解析到变量中. (常见于变量覆盖漏洞)
  语法
  parse_str(string,array)
  参数    描述
  string    必需。规定要解析的字符串。
  array    可选。规定存储变量的数组名称。该参数指示变量存储到数组中。
  针对变量指定***
  不使用foreach遍历$_GET变量,改用$_GET[(index)]
  eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。
  如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
  preg_replace 执行一个正则表达式的搜索和替换
  /e参数执行代码
  0x03 漏洞篇
  -----------------------------------------------
  [1].Sql-Injection
  留意:cookie及x-forward-for,宽字节,报错注射等
  挖掘漏洞参考
  变量
  $_GET[""],$_POST[""],$_COOKIE[""], $SERVER[""]
  数据库操作函数
  mysql_query()
  数字型注入防范:
  1.is_numeric() ctype_digit() intval()
  2.str_length()确定长度
  字符型注入防范:
  1.mysql_real_escape_string()
  2.数据库查询语句前加@防爆错
  3.str_length()确定长度
  -----------------------------------------------
  [2].Command-Execution
  函数:
  system(),passthru(),popen(),exec()
  数据库操作函数:
  exec,system,popen,passthru,proc_open,shell_exec
  执行命令管道符 % | >
  测试如0 | dir c:
  || 双竖线的作用,前面语句执行错误则执行后面语句
  如xx"+||+whoami+||+echo
  -----------------------------------------------
  [3].File-Inclusion
  函数:
  include(),require(),include_once(),require_once()
  远程文件包含漏洞要求
  allow_url_fopen()  allow_url_include()  file_get_contents()
  绕过:zlib://和ogg://
  5.2.0之后版本
  data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+  //
  @eval(file_get_contents('php://input'));  //POST phpinfo();
  配合%00截断,新版本自动转义\0
  -----------------------------------------------
  [4].CSRF
  CSRF防范策略
  1>验证http-referer字段
  安全性低,易被伪造
  2>在请求地址中添加token并验证

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655007-1-1.html 上篇帖子: php 快速排序 下篇帖子: php pdf 生成
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表