我的大学(IT-Securiy)有一个程序,您必须尝试捕获"标记"例如,通过操纵php或html代码。我们只看到下面的代码,程序运行在他们的网站上。所以我们需要以某种方式操纵网址或类似的东西...但我真的坚持这一点:
<?php
require_once '_flags.php';
highlight_file(__FILE__);
if (isset($_GET['pw']) &&
md5($_GET['pw']) == '0e13371337133713371337133713371337') {
echo $doyouphp3_flag;
}
我知道,我必须通过添加...
来提交密码?pw=...
...在网址的末尾,但我只是不知道... 有没有办法绕过md5功能,例如,因为我不认为他们要我强制密码......
希望有人可以帮助我,或者至少给我一个提示。
的Marius
答案 0 :(得分:1)
您只需要观察 <div *ngIf="this.router.url !== '/main/item:id'">
是一个数字,它不是有效的md5哈希值。
然后你需要知道涉及数字字符串的php松散比较(使用0e13371337133713371337133713371337
运算符)是如何工作的。您可以在documentation:
如果您将数字与字符串进行比较或比较涉及 数字字符串,然后每个字符串转换为一个数字和 比较用数字表示。
所以,现在你知道了
==
所以,你只需要找到一个同样是数字的md5哈希。
var_dump('0' == '0e13371337133713371337133713371337'); // true
var_dump('0e123' == '0e13371337133713371337133713371337'); // true
var_dump('0e65165165165165' == '0e13371337133713371337133713371337'); // true
的md5哈希为240610708
,0e462097431906509019562988736854
为真。所以你可以使用它。但"0e13371337133713371337133713371337" == "0e462097431906509019562988736854"
也应该可以正常使用。
这里有什么教训? QNKCDZO
md5('240610708') == md5('QNKCDZO')
是true
并且它很危险,您应该使用===
代替==
。