到底给不给flag呢
先看代码
get和post里面必须只有一个发送了flag
如果两个都发送了会是true然后运行exit直接结束代码
再下一个是发送的flag不能是===flag
不然也是一样
之后就是一个循环遍历,把post传的参数当作一个变量名然后参数值当作变量值
输入一个flag=a看一下
所以这里我们输入之后可以理解一下
变成了$flag=$a
但是a又不存在所以这里再输入一个a=flag
这样输入之后就是$flag=$a&$a=$flag
但是这里有个问题我们在进行第一个循环的时候就是flag=null了所以之后就无法进行
所以这里两个位置换一下
?a=flag&flag=a
这样就行了
写shell
很简单的一个代码
就是写一个shell
不过这里有一个问题这个马前面有iygeexit()函数
这个可以算是终止函数了这个函数运行完之后,之后的函数就不会运行了
所以简单说我们post传参上去的他也不会运行
这个就是死亡代码了,这里可以使用伪协议来绕过
php://filter/write=convert.base64-decode/resource
这里利用到base64-decode这个东西对要些的东西进行处理之后会导致exit()无法被php解释器来解析
所以就失效了
这里不能直接加进去,因为如果我们把<?php exit();当作base64字符
会自动省去不是的字符
所以最后就是phpexit所以这里是7个字符我们为了之后的解码没有问题所以要加一个
所以4个字节为一组
所以就这样
直接cat
注入
打开就这点东西
这个一眼注入点
直接sqlmap一把梭
emmm,感觉好像是xpath注入
这结构看着好像xpath啊
但是这里报错也报不出来抓包看一眼
emmm还是没找到报错
额,闭着眼睛直接上payload
也是出来了
某函数的复仇
看着挺简短的代码,但感觉不是很友好
先审一手
这里shaw只能使用小写和下划线_
然后root的话不能有那一堆东西
shaw这个被当作函数来调用