微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代码审计_extract变量覆盖

题目链接https://ctf.bugku.com/challenges

题解:

打开题目

得到一段PHP代码

代码中相关函数知识点链接如下:

extract函数http://www.w3school.com.cn/php/func_array_extract.asp

isset函数http://php.net/manual/zh/function.isset.php

file_get_contents函数http://www.w3school.com.cn/php/func_filesystem_file_get_contents.asp
代码白话翻译: 
一个名叫flag的变量等于‘xxx’ 
将通过GET传过来的数组转为一个名为数组名,值为数组值的变量(如果新的变量和已有变量重名,会将已有变量替换) 
如果存在一个名叫shiyan的字符串 
将flag变量的值赋给名为content变量 
如果变量shiyan和变量content的值相同, 
就输出flag的值 
否则就输出Oh,no 
因为extract()会把符号表中已存在的变量名的值替换掉,所以制造Payload :?shiyan=&flag= 
也就是利用新传入的值为空的flag替换原有的flag的值。构造空等于空,成功输出flag的值 

即flag为:flag{bugku-dmsj-p2sm3N}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐