14th-day

 · 2019-8-13 · 次阅读


39.文件包含2(http://123.206.31.85:49166/index.php?file=hello.php)
  进入页面后,是一个hello.php提示里面也说过文件包含,并且可以看到url中有个file=因而应该可以用php流读取文件,先最基本的看一下源代码和网络有没有其他提示。无其他提示,因而直接php流,payload:?file=php://filter/read=convert.base64-encode/resource=hello.php 链接回车后会出现h1标记的naive,说我幼稚哼哼,查看源代码发现注释的upload.php,打开它发现了文件上传的页面,任然是只允许上传Jpg gif png 格式的文件。那就接着上传我的yijuhua.jpg,再用bp抓包看看,跟上次的那个包长得一模一样,那我先一模一样改着试试。回忆一下这种上传过滤会过滤掉不对的文件类型以及会过率掉content-type头文件中的。Content-Type: multipart/form-data;这儿mUltipart采用大小写绕过它。然后上传的文件肯定得改成php才能解析先试试上次得php5.还是说只允许上传jpg,我把数据部分得content-type也改为php试试,也不行,试试0x0截断,采用yijuhua.php.jpg得方式中间用0x0相连,采用0x0截断任然被读取出是上传非法,这道题应当是白名单机制,因而在我尝试其他各种php4,php5等都是非法的,再试试其他途径绕过。在其他人的wp上看到了构造命令执行:上传文件的后缀名为.php;.jpg这里我有些疑惑等会儿解决我先试试这种方式。上传后,打开图片路径的网页,显示了一串this_is_flag.txt的文件直接打开拿下flag.这道题我做的懵懵懂懂的现在来一探究竟。
  这种方式是用来列出当前目录的。采用script标签。
文件包含的漏洞原理:在通过服务器脚本的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致任意的文件泄露甚至恶意的代码注入。
require()
require_once()
include()
include_once() 这些都是容易产生文件包含漏洞的函数,其他的相关原理下来接着掌握,先到这里,等会儿接着做。