#禁止右键复制模块,去掉下面的/*注释可使用#

i春秋web个人刷题记录,防止退化

新手一个,纯记录做法,借鉴了不少文章。话不多说,上题!

注:如果看不懂PHP代码的相关函数可以去PHP手册查找,网站:https://www.php.net/manual/zh/index.php

PHP可在菜鸟快速入门。

hackbar若要收费要许可证,可直接在下方输入asd,即可正常使用。

 

爆破-1:打开链接,发现PHP代码

 

 

 

 

 

 

题目提示在六位数变量中,明确我们的flag在flag.php这个文件里面以注释或者不外显的形式存在。

hello这个变量是我们可控的,并且只能是全是字符,如果有其他则结束。

"$$a",这里有2个$符号,$a是我们传过去的变量,再加上个$号则又是个变量,

preg_match('/^\w*$/',$a ) 过滤所有小写字母,通过大写字母绕过

eval("var_dump($$a);"); 加上题目解释联想到_SERVER、_COOKIE等变量,测试可以通过,测试GLOABLES,可以打印出全部变量

量。

解法:

 

 

 

 

二、爆破-2

 

 

 

var_dump函数是会将变量内容输出来并加上变量的类型。

因为其外围有个eval()函数,说明可以我们变量内容如果是一个语句或者命令的话是可以执行的,

所以我们要控制hello里面的值,用它来读出flag.php文件,PHP文件读取方式如下。

 

 

 

构造url:

http://62c123bf4f8a456a870a0b3a3841acde07a12dce89ee48a3.game.ichunqiu.com/?hello=file_get_contents('flag.php')

 

 

string(83),是回显了了个83长度的字符串,但是这里并不完全,查看该页面源码即找到flag:

 

 

三、爆破-3

 

 

 

 

这里的require与include基本一样,是调用其他php文件进来的函数,require会生成致命错误然后终止脚本

1、首先创建了一个会话内容,$_SESION 变量用于存储关于用户会话(session)的信息,初始值nums为0,

time为当前时间,whoami为ea。并且这个会话在120秒之后结束。

2、通过get或post请求获取到value的参数,然后随机生成两个字母拼接成字符串

3、如果whoami变量的值是传入value的参数前两位,并且value的md5值的第5个开始长度为4的字符串==0,

这时num++,这时whoami的值是随机的那两个字母组成的字符串

4、循环十次然后输出flag

构造payload:

在这里因为md5不能处理数组,md5()这个函数参数如果为数组就会返回false,也就是满足 == 0,

可以利用数组来绕过md5值等于0的条件:?value[0]=e&value[1]=a

然后就是第一个条件,我们可以手动打,在120秒内来十次也就出来啦,也可以写脚本跑,参考py脚本如下:

import requests
url="这里复制你那题目的URL"
s = requests.Session()
h = s.get(url + '?value[]=ea').text
for i in range(10):       
    h=s.get(url + '?value[]=' + h[0:2]).text
    if 'flag{.*}' in h:
        break
print(h)

  

 

posted @ 2022-03-10 11:09  Hndreamer  阅读(155)  评论(0编辑  收藏  举报
#百度统计#