R!C!E!

发布时间 2023-10-01 20:20:30作者: 努力的大魔王

打开题目看到php代码

 进行代码审计发现是两个条件绕过

  1. 传入的password的md5加密的前6 位为c4d038(MD5截断)

  2. 传入 的e_v.a.l 不能包含flag等字符(黑名单绕过)

 MD5截断

这里就需要上脚本暴力破解MD5密码了

 得到结果

 则password=114514

 

黑名单绕过

这里需要一点前置知识

CTFshow刷题日记-WEB-命令执行上29-55_"if(!preg_match(\"/flag|system|php|cat|sort|shell|_OceanSec的博客-CSDN博客

在这里参数 e_v.a.l 我们选择下面的这个payload

 注意!需要在fl*的前面加上反斜杠,因为我们是打开目录文件,并非直接打开文件

 然后我们构造payload

 因为在php中参数  e_v.a.l 中“_”会被认为非法字符过滤掉,这个时候我们就得用“[”符号替代

最后构造完整的payload

password=114514&
e[v.a.l= echo(`tac%09/fl*`);

  得到flag