抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

你会日志分析吗

线索只有一份 access.log,你能从中分析到什么?

sectraffic

攻击者 B 在某次渗透测试过程中,也通过枚举弱口令的方式拿下了机器 B 的登录权限。他的部分操作也被系统捕捉并记录了下来,请分析他的操作并获取 flag。答案加 flag{}格式。

cubic

Please give me 6 pairs of positive integers (x,y,z) satisfying the equation x/(y+z) + y/(z+x) + z/(x+y) = 6

simultaneous

AGame_给转账

请转账

0xb4D288dE112799141064CF2Af23ab33C074863D4@ropsten

make is_successful be true

input address at http://8.140.187.205:25112/

  • 类型:PWN

SafeContract

What is in the contract

合约地址:

0x8C34E8c05846be833Faa82EbdcE48F2c3288dd38@ropsten

make safe be true

input address at http://8.140.187.205:6584/

  • 类型:PWN

apollo

附件补充 aarch64 库,同时此题的难点在于 vm 虚拟机的分析。 https://pan.baidu.com/s/1_RgBNGCBzJeBqlFKDBV0xg 提取码:GAME。

hint2: 漏洞点在于车辆前方的绿灯或黄灯的转化,使车辆到达了地图外

quiet

quiet-aarch64.zip 链接:https://pan.baidu.com/s/1VhHCpGv8JdlwF8_xtYJmDQ 提取码:GAME

redemption_code

所谓的虐心手游,连发的兑换码都这么复杂。

  • 类型:Reverse
  • 文件:re.zip

CrackMe

Crack Me

GoEncrypt

Golang encrypter

internal_system

开发了一个公司内部的请求代理网站,好像有点问题,但来不及了还是先上线吧(─.─||)

http://8.140.152.226:47921/

/source 存在源码泄露;/proxy 存在 ssrf

  • 类型:Web
const express = require("express");
const router = express.Router();

const axios = require("axios");

const isIp = require("is-ip");
const IP = require("ip");

const UrlParse = require("url-parse");

const { sha256, hint } = require("./utils");

const salt = "nooooooooodejssssssssss8_issssss_beeeeest";

const adminHash = sha256(sha256(salt + "admin") + sha256(salt + "admin"));

const port = process.env.PORT || 3000;

function formatResopnse(response) {
  if (typeof response !== typeof "") {
    return JSON.stringify(response);
  } else {
    return response;
  }
}

function SSRF_WAF(url) {
  const host = new UrlParse(url).hostname.replace(/\[|\]/g, "");

  return isIp(host) && IP.isPublic(host);
}

function FLAG_WAF(url) {
  const pathname = new UrlParse(url).pathname;
  return !pathname.startsWith("/flag");
}

function OTHER_WAF(url) {
  return true;
}

const WAF_LISTS = [OTHER_WAF, SSRF_WAF, FLAG_WAF];

router.get("/", (req, res, next) => {
  if (req.session.admin === undefined || req.session.admin === null) {
    res.redirect("/login");
  } else {
    res.redirect("/index");
  }
});

router.get("/login", (req, res, next) => {
  const { username, password } = req.query;

  if (
    !username ||
    !password ||
    username === password ||
    username.length === password.length ||
    username === "admin"
  ) {
    res.render("login");
  } else {
    const hash = sha256(sha256(salt + username) + sha256(salt + password));

    req.session.admin = hash === adminHash;

    res.redirect("/index");
  }
});

router.get("/index", (req, res, next) => {
  if (req.session.admin === undefined || req.session.admin === null) {
    res.redirect("/login");
  } else {
    res.render("index", { admin: req.session.admin });
  }
});

router.get("/proxy", async (req, res, next) => {
  if (!req.session.admin) {
    return res.redirect("/index");
  }
  const url = decodeURI(req.query.url);

  console.log(url);

  const status = WAF_LISTS.map((waf) => waf(url)).reduce((a, b) => a && b);

  if (!status) {
    res.render("base", { title: "WAF", content: "Here is the waf..." });
  } else {
    try {
      const response = await axios.get(
        `http://127.0.0.1:${port}/search?url=${url}`
      );
      res.render("base", response.data);
    } catch (error) {
      res.render("base", error.message);
    }
  }
});

router.post("/proxy", async (req, res, next) => {
  if (!req.session.admin) {
    return res.redirect("/index");
  }
  // test url
  // not implemented here
  const url = "https://postman-echo.com/post";
  await axios.post(`http://127.0.0.1:${port}/search?url=${url}`);
  res.render("base", "Something needs to be implemented");
});

router.all("/search", async (req, res, next) => {
  if (!/127\.0\.0\.1/.test(req.ip)) {
    return res.send({
      title: "Error",
      content: "You can only use proxy to aceess here!",
    });
  }

  const result = { title: "Search Success", content: "" };

  const method = req.method.toLowerCase();
  const url = decodeURI(req.query.url);
  const data = req.body;

  try {
    if (method == "get") {
      const response = await axios.get(url);
      result.content = formatResopnse(response.data);
    } else if (method == "post") {
      const response = await axios.post(url, data);
      result.content = formatResopnse(response.data);
    } else {
      result.title = "Error";
      result.content = "Unsupported Method";
    }
  } catch (error) {
    result.title = "Error";
    result.content = error.message;
  }

  return res.json(result);
});

router.get("/source", (req, res, next) => {
  res.sendFile(__dirname + "/" + "route.js");
});

router.get("/flag", (req, res, next) => {
  if (!/127\.0\.0\.1/.test(req.ip)) {
    return res.send({ title: "Error", content: "No Flag For You!" });
  }
  return res.json({ hint: hint });
});

module.exports = router;

“慢慢做”管理系统

这个 sql 吧,有点 ssrf 的样子,首页是一个很普通的 sql 注入,没有什么花样,但是我的 admin.php 是一个内网的管理系统,只要你用“真-admin”的密码登录了,就可以拿到 flag,反正慢慢做就对了,不要急躁,静下心。

第一步登录的 sql 语句是"SELECT * FROM users WHERE password = '".md5($password,true)."' limit 0,1";

  • 类型:Web

签到

师傅们常说,要善于学习,细致入微;师傅们也常说,要善于分享,总结归纳。 2021 年 3 月 28 日,PHP 维护的官方 Git 服务器 git.php.net 被袭击,其 Git 仓库遭到恶意篡改。如果开发者使用这些遭到篡改的源代码进行网页的开发的话,网站就会在不知情的情况下被感染。

  • 类型:Web

unsetme

是缺陷还是漏洞呢。

  • 类型:Web
<?php
// Kickstart the framework
$f3=require('lib/base.php');

$f3->set('DEBUG',1);
if ((float)PCRE_VERSION<8.0)
    trigger_error('PCRE version is out of date');

// Load configuration
highlight_file(__FILE__);
$a=$_GET['a'];
unset($f3->$a);

$f3->run();



博客内容遵循 [署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh)
本站总访问量为 访客数为
本站使用 Volantis 作为主题