PHP使用数组整型溢出绕过赋值式“永真”判断以进入else子句
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子句相关推荐
- C语言的整型溢出问题
整型溢出有点老生常谈了,bla, bla, bla- 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一 ...
- C进阶指南(1):整型溢出和类型提升、内存申请和管理(转)
转自:http://blog.jobbole.com/72830/ C语言可用于系统编程.嵌入式系统中,同时也是其他应用程序可能的实现工具之一. 当你对计算机编程怀有强烈兴趣的时候,却对C语言不感冒, ...
- c++ error函数_Linux中create_elf_tables函数整型溢出漏洞分析(CVE201814634)
在这篇文章中,我们将跟大家分析Linux平台中createelftables函数的一个整型溢出漏洞(CVE-2018-14634). 概述 在近期的一次安全分析过程中,我们在64位Linux系统内核里 ...
- C语言 指针数组-字符指针数组整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4]
基本介绍 1.指针数组:由n个指向整型元素的指针而组成,里面存放指针 Int *ptr[3]; 2.地址: ptr[i]:元素地址 &ptr[i]:指针地址 图示 代码: 内存布局: 代码 # ...
- 什么是整型?Python整型详细介绍
整数类型(int)简称整型,它用于表示整数,例如,100.2016等.整型字面值的表示方式有四种,分别是十进制.二进制(以"0B"或"0b"开头).八进制(以数 ...
- c语言整形提升规则,C语言进阶:整型提升
几乎每个程序员都学过C,而且大多数在他们的工作中使用C.很显然C是TIOBE(2012年11月时排榜首)上最流程的编程语言之一.然而,有时,C的行为会让人意外和困惑.其中一个例子就是**整型提升**. ...
- 什么是整型类型?Python整型详细介绍
整数类型(int)简称整型,它用于表示整数,例如,100.2016等.整型字面值的表示方式有四种,分别是十进制.二进制(以"0B"或"0b"开头).八进制(以数 ...
- solidity智能合约[7]-整型与运算
整型变量 整数是现实中处理最多的单位,在solidity中的整数类型有int和uint,int类型可以存储负数,uint类型只能够存储非负数. int类型:int8,int16,int24,int32 ...
- 我的Go+语言初体验——(6)整型有理数数据类型
我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...
- C++整型(short,int,long,longlong)
C++整型数据类型 整型就是没有小数部分的.C++基本整型有char,short,int,long,long long.由于char 类型比较特殊,下面只关于char,int,long,long lo ...
最新文章
- AndroidStudio 集成环信的一个坑
- PHP 调用web service接口(.net开发的接口)
- npoi 导入 winform excel_勤哲Excel服务器做影视制作企业管理系统 - 科技
- 数据结构与算法--二叉树实现原理
- OC基础--OC中的类方法和对象方法
- UEditor1.2.6.0在.net环境下使用
- ROLAP、MOLAP和HOLAP联机分析处理区别
- 盘点企业更换邮件服务器原因
- 为什么哈希表的容量一定要是 2的整数次幂?
- InstallShield 12 制作安装包
- nef是什么格式?nef格式用什么软件打开?nef格式怎么转换成jpg
- 少儿美术课之水彩画第1集《草地上的小猫咪》
- 2022 携程提前批大数据一二(oc) 面经
- 【渝粤题库】陕西师范大学200531 英语测试 作业(高起本、专升本)
- 李智慧 - 架构师训练营 第六周
- 求循环群的生成元及子群(不一定对-_-#)
- Python入门笔记3
- pytorch 文档网页离线 HTML and PDF
- win7防火墙怎么关_win7系统防火墙开启失败怎么办【解决方法】
- Yolov3没框原因和解决办法