gpt4 book ai didi

php - 通过 url 将整数传递给 php $_GET

转载 作者:行者123 更新时间:2023-12-04 13:41:30 25 4
gpt4 key购买 nike

所以我正在做一些 CTF,其中一项挑战是关于 php 类型的杂耍。代码看起来像这样

if($_GET['var1'] == hash('md4', $_GET['var1']))
{
//print flag
}

所以我 80% 确定我需要传入一个整数,所以它会是真的,但我能操纵的只是 url。我尝试使用 python request 来做,但还是失败了。

import requests
url = 'http://example.com'
params = dict(var1=0)
r = requests.get(url=url, params=params)

是否有任何特殊情况,php 会将传入 GET 数组的变量视为 int?或者有其他方法可以做到这一点?

最佳答案

可以在此处找到此 CT​​F 的答案 https://medium.com/@Asm0d3us/part-1-php-tricks-in-web-ctf-challenges-e1981475b3e4

一般的想法是找到一个以 0e 开头的值。它的哈希值也以 0e 开头.页面给出了0e001233333333333334557778889的例子产生 0e434041524824285414215559233446 的哈希值

这种记数法称为科学记数法。要了解为什么这种类型的杂耍有效,您需要了解这两个数字是什么。如果我们将科学记数法转换为十进制,那就很明显了。
0e001233333333333334557778889 = 0×1012333333333333345577788890e434041524824285414215559233446 = 0×10434041524824285414215559233446

从小学数学我们知道,任何乘以 0 的结果都是 0,这意味着两个数字都是 0。
$_GET 中提供的所有输入或 $_POST superglobals 是字符串类型。
多亏了 PHP 的类型杂耍系统,两个字符串都被视为用科学记数法编写的浮点数,当转换为浮点数时,它们都等于 0。

关于php - 通过 url 将整数传递给 php $_GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56487143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com