小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例

这篇具有很好参考价值的文章主要介绍了小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#研究对象

PHP代码漏洞(代码问题)


#知识点:

1、过滤函数缺陷绕过

2CTF 考点与代码审计


一、原理-缺陷函数-使用讲解-本地

内置函数:

大部分是比较函数(过滤时使用的函数)

(1)、=====

参考:

PHP 浅谈 == 和=== 中,数字和字符串比较的问题。_php 数字==字符串-CSDN博客

a.==:只数值比较,判断不能成为唯一性

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

数字和字符串进行比较时,当这个字符串是一个无法转换为数字的字符串,它就会被强制转化为数字,结果总是为0 

如a=0;b='admin'——a==b——》True

而a=1;b='1admin'——b里的admin无法转换为数字所以为0,又和1组合最后b的值为1

所以a==b

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

b.===:数值和类型都比较,具有唯一性

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

(2)、md5

a.使用==的缺陷

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

代码逻辑是:当name和password收入的值不同时,进入第二个条件:name的md5加密后的数==比较passwordmd5加密后的数,如果相等,则输出flag


输入name=QNKCDZO和password=240610708

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

解析

QNKCDZO以MD5加密:0e830400451993494058024219903391

240610708以MD5加密:0e462097431906509019562988736854

又已知是用”==”进行的比较,所以就绕过了

b.使用===的解析:

MD5数组判断不了数组,会返回null

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

===唯一性比较,所以我们使用数组的方式

name[]=1&password[]=2

代码会收到两个null,故判断正确。输出flag

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

(3)、intval

获取数值的整数型(默认十进制。)

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

如果base为0,则通过字符串的格式进行检测

输入的字符串如以0开头,则会被转换为八进制;

            如以0x开头,则以十六进制转换;

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

(4)、strpos :strpos(string,find,start)

string是被检查的字符串,find是要被搜索的字符串,start是开始检索的位置,从0开始

查找字符串第一次出现的位置,区分大小写

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

可以通过换行进行绕过:%0a666

%0a:表示换行

也可以在有必要的条件下使用 数组 返回null

(5)、in_array

搜索数组中的特定值:第三个参数,可选,如果设为True,则函数检查搜索的数据与数组的值的类型是否相同(类似===)

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

第三个参数作为缺陷:

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

(6)、preg_match

正则表达式:执行匹配数据,第一个参数:只能匹配字符串

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

代码逻辑:获取到一个num值,匹配num值中是否有0-9的字符,有就die并输出nonono,反之出来,进入下一个条件:num为整数即可

缺陷:有函数性质可得,第一个参数只接受字符串,所以输入一个数组即可

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

(7)、str_replace :Sql过滤

将第一参数,转换为第二参数值;无法迭代循环。即只能一次性过滤

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

缺陷:

大小写和双写

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

二、实践-CTFShow-PHP 特性-89 关卡

1.小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

由题得输入num[]=1的形式即可

2.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

第一个判断不能为4476

第二个为取整之后判断需要为4476

得知intval函数的base为0,所以需要进制转换区触发flag

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

输入八进制:010574

输入十六进制:0x117c

3.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

查看相关preg_match里的参数/^php$/im:前面内容不管,只要是内容有php,$/im:代表/i(区分大小写)、/m(是否换行匹配)

代码逻辑就是:第一个是带了/m的也就是要查是否有换行;第二个是不带的,而我们是要进else拿flag的,所以

输入cmd=%0aphp

4.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

这题和上面的区别就是这里是==

所以要去输出flag的话

输出4476djakljskl——都可以主要不要进第一个if

5.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

这题就是将num中有英文的进行过滤了

所以可以

输出4467.1

6.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

这题加了个strpos,是寻找字符串的第一个匹配字符,而且最后一个条件中是===,故要考虑值和类型完全相等的状况,又因为,它用了preg_match和strpos,使八进制和十六进制不能用;

可以用:4476.0

               4476.1

       空格010574

7.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

这题的preg_match多了个过滤.

所以输出 空格010574

8.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

这题就是==,输入flag.php的文件,不让它等于flag.php,进else里,将输入值打印;

为了让文件能够完美的输出来,可以用路径在代替

输入:./flag.php

如果这个操作系统为windows,Linux就不行

也可以:flag.php.

9.

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

===类型和数值都相等,函数使MD5,所以用数组,同时还是POST接收

输入:A[]=1&b[]=2

三、实践-代码审计-过滤缺陷-文件读取

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

源码中的replace发现可以进行绕过

所以由于这个是个对象,去看谁把它给调用了

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

同时要考虑源文件中的if条件,进行访问

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

得知它是以图像的形式,所以正常的界面是访问不到的,因此我们使用bp

在原文件中加上echo $dir;进行安全测试

读取到网站的管理员账号和密码

小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例,安全,php,开发语言

补:路径中的/ \都是可以的文章来源地址https://www.toymoban.com/news/detail-804817.html

到了这里,关于小迪安全20WEB 攻防-PHP 特性&缺陷对比函数&CTF 考点&CMS 审计实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全基础~web攻防特性2

    Burpsuite Render在无法预览显示时,可以适当的清理缓存 win10下输入文字变成繁体解决 进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。 下载文件(最新版本包含新的漏洞靶场): https://github.com/WebGoat/WebGoat/releases/ https://github.com/WebGoat/WebGoat/releases/ 执行命令,开

    2024年01月25日
    浏览(41)
  • 安全基础~web攻防特性1

    使用 thinkphp 开发的框架,其首页访问指向 public 目录,指向其中的index.php文件 指向的index.php打开网页后是如下情况,代码如下 定义应用目录,是将文件首页展示在上图的 application 目录下,其下有index.php文件 application 目录index.php文件 thinkphp框架首页访问的目录 想要得到的目

    2024年01月22日
    浏览(49)
  • WEB攻防基础|PHP|过滤函数intval()绕过原理及方法

    用于获取变量的整数值;可使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 注意: intval() 不能用于 object,否则会产生NOTICE 错误并返回 1。 语法结构: $var ,需要被转换成integer的值; $base ,决定转化时可所使用的进制。 如果 $base值为0, 通

    2024年01月16日
    浏览(45)
  • 小迪安全 第56天 服务攻防-数据库安全&H2&Elasticsearch&CouchDB&Influxdb 复现

    1.端口扫描 2.报错回显 时序数据库是近几年一个新的概念,与传统的Mysql关系型数据库相比,它的最大的特点是:数据按照时间顺序存储。 举例来说,日志数据,是以时间顺序存储的,所以用时序数据库存储是一种很好的选择。使用Mysql在存储的过程中,不是对这种基于时间

    2024年02月03日
    浏览(47)
  • 小迪安全 第59天 服务攻防-中间件安全&CVE 复现&IIS&Apache&Tomcat&Nginx

    IIS现在用的也少了,漏洞也基本没啥用  没有和权限挂钩 windows 2003上面的漏洞 配置不当:该漏洞与 Nginx、php 版本无关,属于用户配置不当造成的解析漏洞。 这个跟文件上传类似,找到文件上传点,上传png图片 找到上传路径和nginx版本号 查看路径 添加后缀可以用php执行png

    2024年02月04日
    浏览(101)
  • [CTF/网络安全] 攻防世界 Web_php_include 解题详析(php伪协议、data伪协议、file伪协议)

    这段代码首先通过 show_source(__FILE__) 显示当前文件的源代码,然后通过 $_GET[\\\'hello\\\'] 显示 URL 参数中名为 hello 的值。 接下来,代码使用 $_GET[\\\'page\\\'] 获取 URL 参数中名为 “page” 的值,并进行字符串替换,将 php:// 替换为空字符串 这是为了防止通过 URL 参数加载本地文件或其他可

    2024年02月08日
    浏览(48)
  • 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全

    1.后台验证-登录用户逻辑安全-怎么去判定用户登陆成功 2.后台验证-COOKIESESSION 3.后台验证-验证码·万能密码等 思路: 1.发送登录请求 账号 密码 2.接收账号密码 3.判断账号密码的准确性 正确 成功登陆-跳转成功页面 错误 失败登录-重新登陆 后台管理系统有多个文件页面,为了

    2024年04月15日
    浏览(75)
  • 小迪安全 第14天:php开发-个人博客项目&输入输出类&留言板&访问IP&UA头来源

    1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS反射存储 4.安全问题-XSS跨站CSRF等 导入sql文件:navicat导入sql数据库文件的简单操作步骤_sql文件怎么导入navicat-CSDN博客①搜索框: ② php代码: ③结果  ④总结 在输入输出过程中有哪些安全问题:1.sql注入 2. XSS (在搜索框

    2024年04月26日
    浏览(48)
  • 安全基础~攻防特性3

    (Server-Side Template Injection) 服务端模板注入 1、使用框架(MVC的模式),如python的flask,php的tp,java的spring等 2、用户的输入先进入控制器,导致服务器模板中拼接了恶意用户输入导致各种漏洞 3、根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取

    2024年01月21日
    浏览(47)
  • 攻防世界-WEB-Web_php_include

    打开靶机 通过代码审计可以知道,存在文件包含漏洞,并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下: 这两个都为on 所以我们就可以使用data://伪协议 payload如下: 访问新连接 上面的payload就可以实现命令执行了 找了半天发现flag在fl4gisisish3r3.p

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包