intval的绕过和chr的利用

题目

<?php
error_reporting(0);
$flag = 'OKOKOKOK'  //老样子 自定义一个flag
$value = $_GET['value'];  //接受value参数
$password = $_GET['password'];  //接受get参数
$username = '';

for ($i = 0; $i < count($value); ++$i) {
    if ($value[$i] > 32 && $value[$i] < 127) unset($value);
    else $username .= chr($value[$i]);
    if ($username == 'w3lc0me_To_xid1an' && intval($password) < 232 && intval($password + 1) > 233) {
        echo 'Hello '.$username.'!', '<br>', PHP_EOL;
        echo $flag, '<hr>';
    }
}

highlight_file(__FILE__);

if ($value[$i] > 32 && $value[$i] < 127) unset($value);
else $username .= chr($value[$i]);
if ($username == 'w3lc0me_To_xid1an' && intval($password) < 232 && intval($password + 1) > 233) {
      echo 'Hello '.$username.'!', '<br>', PHP_EOL;
      echo $flag, '<hr>';

这里我们知道需要自己写个数组来chr取模 为w3lc0me_To_xid1an
1.chr为自动模256 所以我们可以在原来上加上256 绕过第一个判断先
2.intval()在处理16进制时存在问题,但强制转换时是正常的 来绕过第二个判断
intval(字符串)为0 但是intval(字符串+1) 会自动转换成数值的
php7里面修复了这个东西

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]=376&value[12]=361&value[13]=356&value[14]=305&value[15]=353&value[16]=366&password=0x123
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值