找回密码
 立即注册
注册 登录
×
热搜: 活动 交友 discuz
查看: 99|回复: 0

山石网科-靶机-渗透测试

[复制链接]

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-11-28 15:00:47 | 显示全部楼层 |阅读模式
资产和其他说明

靶场连接:http://ctf1-1.anfu.hillstonenet.com:8081/
限制:不使用主机扫描、不使用端口扫描、不允许DDoS
要求:拿到HillstoneFlag{}格式的flag
渗透过程

信息搜集


  • 拿到网站,打开发现是一个博客系统。随便点了点发现没什么思路,用dirsearch扫了一遍找到几个入口。
  • 在主页右键查看源代码发现网站是一个开源项目





  • 跟着作者提供的链接找到github地址,容易发现这是star最多的一个项目PHP-Blog-Admin,clone下来。
  • 在互联网上检索关键词ethredah可以找到相关的靶机wp,非常相关的博客有两篇,这在很多地方都给了我一些思路。
代码审计

根据博客1的方法,对new_admin.php发送post包,成功出现hold on.字样,发现并没有成功新建管理员。遂审计代码
if (isset($_POST['submit'])) {
      //-- Get Employee Data --//
      $email = $_POST['email'];
      // CHECK IF EMPLOYEE EMAIL EXISTS /
      $sql = "SELECT id FROM admin WHERE email = ?";
      $stmt = $db->prepare($sql);
      $stmt->execute([$email]);
      if ($stmt->rowCount()>0) {
          // email already EXISTS
            echo "Oops...This email already exists!";
            // die();
      }
   ......基本逻辑是如果存在post形式的submit参数,就可以插入邮箱和密码,我在本机搭环境成功完成插入。应该是靶机做了处理。
<hr/>根据博客2的方法,对single.php进行盲注,测试下来无法盲注到任一字符。抓包到burp测试,payload:id=if((1)like(2),-1,5)(是过滤了空格,发现不存在盲注。同样审计代码,发现应该是存在sql注入的,也因该被处理过。



SQL注入

真正存在注入的点是comment中,在帖子下面留言后,发现留言不会消失,这说明留言是经过数据库的。对评论进行抓包测试,发现api.php存在cookie注入。手工测试被过滤空格、引号等特殊字符,盲猜是盲注,上sqlmap
sqlmap payload sqlmap -u http://ctf1-1.anfu.hillstonenet.com:8081/api.php?action=commentcontroller --cookie commentid=5 --dbs --level 2
发现确实存在注入,直接--sql-shell查询,查到admin表的信息



用cmd5破解md5得到密码为123456,使用账号登陆后台来获取更多资产
后台文件包含

根据博客1的说法,进入后台后可以找到文件上传点,再通过文件包含可以拿shell。发现上传点限制任何类型文件,除非有其他方法利用,否则不懂为什么要这样设计,存在很大的误导性。
使用文件包含时,文件包含入口为:/Company_admin/language.php?template=
包含../../../../..//etc/passwd发现并不是任意文件读取,存在过滤。
<hr/>发现该入口



遂将参数定为template=TIP,得到提示:



即开发者所有的命令,审计了半天重要发现为:

  • flag文件名
  • flag绝对路径
接下来就是解决如何获取该文件的问题,我仍然觉得包含点依然为/Company_admin/language.php?template=,但做了防护,绕过这些防护是值得尝试的。
<hr/>最终根据alert提示确定为双写防护。绕双写也非常简单,就是将../改为....//得到结果
payload:/Company_admin/language.php?template=....//....//....//....//....//....///home/www/flag-stage1-272d3798-cdc0-4f47-9a77-d8916fb84226.txt
结果和总结

flag

flag值为HillstoneFlag{751e0a77-0c37-43d3-a728-1ba24ee28fbb}
<hr/>根据该flag文件名认为还有存在其他阶段flag的可能性,如果要拿其他flag很有可能需要webshell,进一步需要审计命令了。这过程中还有一些其他未成功的思路:

  • 尝试从sql拿os-shell,发现数据库用户不是root
  • 以为用户post包含图片地址,想通过修改数据库图片地址来外带文件信息
  • 在/localfileman/?user=admin 入口处耽误了很多时间,一度认为这里存在利用点,甚至审计了其js代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 黑客通

GMT+8, 2025-10-12 03:11 , Processed in 0.091092 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表