hackme_Login As Admin 6

先上源码:

然后发现了一个存在很大漏洞的函数——extract()

众所周知,它有一个最大的漏洞——变量覆盖,即可以通过我们提交的变量把脚本中原来的变量覆盖掉!

通过阅读代码,可以知道它是用$users这个变量来验证我们提交的是否有效,

所以除了提交username&password之外,我们还需要提交一个users,来把原来的$user覆盖掉

所以如此构造payload:

data={"users":{"admin":"sky"},"username":"admin","password":"sky"}

关于json_decode():

  就是把json形式的数据进行解码,这里加上了true这个参数,就是解析成了数组

  我们的payloadt提交上去变成了:

  ["users"] = {["admin"]="sky"}//我不确定是不是这样,求大佬指正

  ["username"] = "admin"

  ["password"] = "sky" 

  再通过extract(),将数组中的元素变成了变量,即

  $users={["admin"]="sky"}

  $username = "admin"

  $password = "sky"

猜你喜欢

转载自www.cnblogs.com/huangming-zzz/p/9834446.html