ctf 你真的会php?

ctf 你真的会php?
//这题最重要的思想是结合系统思考渗透方向
if(is_numeric($_REQUEST[‘number’])){//不能是数字通过空格绕过

$info=“sorry, you cann’t input a number!”;

}elseif( r e q [ ′ n u m b e r ′ ] ! = s t r v a l ( i n t v a l ( req['number']!=strval(intval( req[number]!=strval(intval(req[‘number’]))){//直接实验
var_dump( strval(intval(" 123 "))); string(3) “123” 可以看到 空格直接被没有了
$info = "number must be equal to it’s integer!! ";

}else{

 $value1 = intval($req["number"]);
 $value2 = intval(strrev($req["number"]));  //也是直接实验

var_dump(strrev(“123 “)==“321”); bool(true)
注意 “123 “不等于"123” 但是” 123” 等于"123” 所以可以构造入"123 “的东西 strrev一下变成” 321" 等于"321"
然后最骚气的就是结合系统,服务器系统是32位的整形 整数范围是 -2147483648 到 2147483647 2147483647 倒一下是7463847421 再intval 一下 又变成 214748367(64位 -9223372036854775808 是 9223372036854775807))所以构造payload为2147483647%20就可以了
if( v a l u e 1 ! = value1!= value1!=value2){
$info=“no, this is not a palindrome number!”;
}else{

      if(is_palindrome_number($req["number"])){
          $info = "nice! {$value1} is a palindrome number!"; 
      }else{
         $info=$flag;
      }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值