不包含数字和字母的webshell
打开页面,发现有个文件上传,同时看到有一串代码
1 | if($contents=file_get_contents($_FILES["file"]["tmp_name"])){ |
通过对代码的审计,我们可以发现,它对我们上传文件的内容有字符数量的限制和字符的过滤,所以我们可以写个exp来fuzz一下
1 | with open("shell.txt","w") as f: |
发现几乎所有的字母和数字都被过滤了,因此我们可以想使用不包含数字和字母的webshell,来传马,因此,我们可以利用UTF-8编码中的某个汉字,然后将其某个某个字符取出来,然后取反的操作,即
1 | <?php |
所以我们可以利用这种方式构造上传的马,为了方便,我们的php开头可以使用短标签<?=,因此exp
1 | <?= //PHP中的另外一个短标签<?=,代替<?php |
提交后,我们可以得到文件的路径,然后我们构造payload
1 | http://ip/upload/d30c18bfaf06a96a29e316bbb21b7ac9.php |
env是显示当前系统中已存在的环境,因为我们在系统目录中找不到flag,所以我们可以使用env,看一下flag是否存在
参考文章:[https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html]
[https://blog.csdn.net/qq_46263951/article/details/118816182?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link]