首页 > 技术文章 > bugku web cookie

r1kka 2021-09-12 16:39 原文

 

 

打开靶场发现是一串意义不明的字符,在进行抓包和查看源代码无果后,我把目光转向了URL,开始觉得有点奇怪,传了line和filename两个参数,filename后接的是一串base64编码,解码后为keys.txt,访问该文件后还是一串意义不明的字符

 

 

此时注意到了filename可能是需要访问的文件名,如果能够访问index.php里的内容得到源代码,就能进行下一步操作了,因为URL是将文件名进行了base64编码后再进行访问的,我也如法炮制,将index.php进行base64编码:aW5kZXgucGhw再进行访问

 

发现没有任何回显,发现好像漏掉了一个line参数,先随意将其赋值为1,发现有了回显

 

 

在对line进行了赋值测试之后,发现line参数的作用是指定回显的代码函数,逐个测试太麻烦了,这里运用了脚本来将其代码全部回显

 

 

 

 

 

 接下来进行代码审计,一共有17行:

第3行首先用了一个条件运算符?:对filename和line进行一个检测

第5行如果filename为空,那么通过headers函数重定向到初始页面headers(“location:path”)

第6行创建一个数组共有2个元素

第10行就是和该题目相关的,检测cookie是否设置,且是否设置为margin=margin,如果是这样那么向file_list数组中加入一个新元素keys.php,显然flag在该文件中

第13行in_array()测试$file_list的键值是否在数组中,第14行的file(),是将文件分割成一行一行的并存储在数组中

keys.php的base64编码为a2V5cy5waHA=

接下来进行payload构造:http://114.67.246.176:11511/index.php?line=&filename=a2V5cy5waHA=

然后再进行抓包设置cookie值,即可得出flag

 

 

 

 

 

 

 

 

 

 

推荐阅读