PHP使用数组整型溢出绕过赋值式“永真”判断以进入else子句

遇到一个CTF题比较有意思,可以看到if判断语句中有个赋值式永真判断。
字面上看会永远执行if语句,怎么样才能使”永真失效“?

<?php
include "flag.php";
highlight_file(__FILE__);if (isset($_GET['0'])){$arr[$_GET['0']]=1;if ($arr[]=1){die("nonono!");}else{die($flag);}
}
?>

先简单分析一下$arr[]=1这句代码,意思是往$arr数组中追加一个数

可以看到执行$arr[]=1之后,数组的最后多出来一个1。
什么是使用数组整型溢出绕过赋值式“永真”判断?
原理:

索引数组最大下标等于最大int数,对其追加会导致整型数溢出,进而引起追加失败

int范围查阅Manual可知:32位最大是231-1,64位是263-1
也就是2147483647与9223372036854775807
我们接着看,在达到数组的最大下标后,再往后面追加,是追加失败的。

我们便可以利用这一点绕过if进入else子句

Payload:

?0=9223372036854775807

PHP使用数组整型溢出绕过赋值式“永真”判断以进入else子句相关推荐

  1. C语言的整型溢出问题

    整型溢出有点老生常谈了,bla, bla, bla- 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一 ...

  2. C进阶指南(1):整型溢出和类型提升、内存申请和管理(转)

    转自:http://blog.jobbole.com/72830/ C语言可用于系统编程.嵌入式系统中,同时也是其他应用程序可能的实现工具之一. 当你对计算机编程怀有强烈兴趣的时候,却对C语言不感冒, ...

  3. c++ error函数_Linux中create_elf_tables函数整型溢出漏洞分析(CVE201814634)

    在这篇文章中,我们将跟大家分析Linux平台中createelftables函数的一个整型溢出漏洞(CVE-2018-14634). 概述 在近期的一次安全分析过程中,我们在64位Linux系统内核里 ...

  4. C语言 指针数组-字符指针数组整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4]

    基本介绍 1.指针数组:由n个指向整型元素的指针而组成,里面存放指针 Int *ptr[3]; 2.地址: ptr[i]:元素地址 &ptr[i]:指针地址 图示 代码: 内存布局: 代码 # ...

  5. 什么是整型?Python整型详细介绍

    整数类型(int)简称整型,它用于表示整数,例如,100.2016等.整型字面值的表示方式有四种,分别是十进制.二进制(以"0B"或"0b"开头).八进制(以数 ...

  6. c语言整形提升规则,C语言进阶:整型提升

    几乎每个程序员都学过C,而且大多数在他们的工作中使用C.很显然C是TIOBE(2012年11月时排榜首)上最流程的编程语言之一.然而,有时,C的行为会让人意外和困惑.其中一个例子就是**整型提升**. ...

  7. 什么是整型类型?Python整型详细介绍

    整数类型(int)简称整型,它用于表示整数,例如,100.2016等.整型字面值的表示方式有四种,分别是十进制.二进制(以"0B"或"0b"开头).八进制(以数 ...

  8. solidity智能合约[7]-整型与运算

    整型变量 整数是现实中处理最多的单位,在solidity中的整数类型有int和uint,int类型可以存储负数,uint类型只能够存储非负数. int类型:int8,int16,int24,int32 ...

  9. 我的Go+语言初体验——(6)整型有理数数据类型

    我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...

  10. C++整型(short,int,long,longlong)

    C++整型数据类型 整型就是没有小数部分的.C++基本整型有char,short,int,long,long long.由于char 类型比较特殊,下面只关于char,int,long,long lo ...

最新文章

  1. AndroidStudio 集成环信的一个坑
  2. PHP 调用web service接口(.net开发的接口)
  3. npoi 导入 winform excel_勤哲Excel服务器做影视制作企业管理系统 - 科技
  4. 数据结构与算法--二叉树实现原理
  5. OC基础--OC中的类方法和对象方法
  6. UEditor1.2.6.0在.net环境下使用
  7. ROLAP、MOLAP和HOLAP联机分析处理区别
  8. 盘点企业更换邮件服务器原因
  9. 为什么哈希表的容量一定要是 2的整数次幂?
  10. InstallShield 12 制作安装包
  11. nef是什么格式?nef格式用什么软件打开?nef格式怎么转换成jpg
  12. 少儿美术课之水彩画第1集《草地上的小猫咪》
  13. 2022 携程提前批大数据一二(oc) 面经
  14. 【渝粤题库】陕西师范大学200531 英语测试 作业(高起本、专升本)
  15. 李智慧 - 架构师训练营 第六周
  16. 求循环群的生成元及子群(不一定对-_-#)
  17. Python入门笔记3
  18. pytorch 文档网页离线 HTML and PDF
  19. win7防火墙怎么关_win7系统防火墙开启失败怎么办【解决方法】
  20. Yolov3没框原因和解决办法

热门文章

  1. Android在GoogleMap(百度地图)实现自定义指南针旋转与回正功能
  2. python实用程序育儿法下载_Python高级编程
  3. Oracle中lpad的用法
  4. [ROS2基础]launch 文件和多节点进程
  5. pycharm方法中划线解决方法
  6. 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
  7. mysql数据库命令备份还原
  8. [日常] Go语言圣经前言
  9. android问号icon,CSS3 动态问号图标(使用工具生成)
  10. neon浮点运算_ARM 浮点计算测试与分析