奇淫巧计 数字十六进制绕过1-9的判断

admin 2024年12月12日07:48:05评论2 views字数 1048阅读3分29秒阅读模式

0x01 阅读须知

鸡哥安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!

0x02 函数/特性说明

1.ord()函数

返回字符的 ASCII 码值

奇淫巧计 数字十六进制绕过1-9的判断

2.strlen()函数

获取字符串的长度

奇淫巧计 数字十六进制绕过1-9的判断

0x03 数字十六进制绕过1-9的判断

1.当我们传入payload:?password=0xdeadc0de,路由过程如下

代码第1-22行:通过$_GET传入password,再将password的值代理noother_says_correct函数中。该函数首先定义了1和9的ASCII码,再用for遍历循环判断传入的值每一位是否大于1小于9,如果是,则返回flase,不是则判断$number和传入的值是否相等,相等则返回flag。当我们传入的值为0xdeadc0de时,由于0xdeadc0de为3735929054的十六进制编码,而php语言默认在转码时遇到十六进制会转为十进制,所以在php中0xdeadc0de是等于3735929054的(如第二张图),故而passDEBUG:$number: "3735929054" $temp: "0xdeadc0de"

function noother_says_correct($temp){    $flag = 'flag{test}';    $one = ord('1');  //ord — 返回字符的 ASCII 码值    $nine = ord('9'); //ord — 返回字符的 ASCII 码值    $number = '3735929054';    // Check all the input characters!    for ($i = 0; $i < strlen($number); $i++)    {         // Disallow all the digits!        $digit = ord($temp{$i});            if ( ($digit >= $one) && ($digit <= $nine) )        {            // Aha, digit not allowed!            return "flase";        }    }    if($number == $temp)        return $flag;}$temp = $_GET['password'];echo noother_says_correct($temp);

奇淫巧计 数字十六进制绕过1-9的判断

奇淫巧计 数字十六进制绕过1-9的判断

 

原文始发于微信公众号(鲲哥的Bypass之旅):奇淫巧计 数字十六进制绕过1-9的判断

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月12日07:48:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   奇淫巧计 数字十六进制绕过1-9的判断https://cn-sec.com/archives/2496133.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息