0%

pollution here, pollution there, pollution everywhere

高级网络攻防课上的一个题,一个原型链污染打electron的题。龚老师要求写报告,就把报告改一下当篇wp记一下。rmb说准备当升级赛题后来又换掉了,太顶级了,完全不会electron,头都被打歪了

但是这门课上起来及其坐牢,每个人都要做web,pwn,re三个方向,会一个方向的就已经非常坐牢了,一个方向都不会的顶级坐牢。最重要的是上课讲的技术就是两句话的介绍,然后实验环节做中等偏低难度的题(这个题顶级难度),跨方向做题无比坐牢。总而言之,这个课上学的东西都不是教的,是给你布置一个奇奇怪怪的题然后自己硬学坐牢学会的。。。
得出结论:不要选这门课!!!不要选这门课!!!不要选这门课!!!

wp

题目分为两部分,server端和bot端,flag放在bot端,可以让bot访问server的页面,bot是用electron写的,看起来就是electron的xss2rce,但是完全不会electron,学了半天也不是很会

阅读全文 »

hxpCTF2022wp

又跟着科恩疯狂偷学,天哥一人单刷全部web,我在科恩后面偷看答案复现
以及,这是一场在23年办的2022ctf

valentine

有效的代码部分如下

app.post('/template', function(req, res) {
  let tmpl = req.body.tmpl;
  let i = -1;
  while((i = tmpl.indexOf("<%", i+1)) >= 0) {
    if (tmpl.substring(i, i+11) !== "<%= name %>") {
      res.status(400).send({message:"Only '<%= name %>' is allowed."});
      return;
    }
  }
  let uuid;
  do {
    uuid = crypto.randomUUID();
  } while (fs.existsSync(`views/${uuid}.ejs`))

  try {
    fs.writeFileSync(`views/${uuid}.ejs`, tmpl);
  } catch(err) {
    res.status(500).send("Failed to write Valentine's card");
    return;
  }
  let name = req.body.name ?? '';
  return res.redirect(`/${uuid}?name=${name}`);
});

app.get('/:template', function(req, res) {
  let query = req.query;
  let template = req.params.template
  if (!/^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i.test(template)) {
    res.status(400).send("Not a valid card id")
    return;
  }
  if (!fs.existsSync(`views/${template}.ejs`)) {
    res.status(400).send('Valentine\'s card does not exist')
    return;
  }
  if (!query['name']) {
    query['name'] = ''
  }
  return res.render(template, query);
});
阅读全文 »

k8s入门

没事做和rmb聊天的时候,因为最近确实不知道该学啥,就扯淡的时候聊到k8s,然后想了一下感觉k8s确实很行,之前菊花入职网易的时候上手的业务也是k8s部署的,云越来越成熟的情况下学一手不是坏事

入门的一大问题在于资料有一点散,加上学习不可能有实际生产环境的部署情况,官方资料也很乱,看了一大堆文档才把各个环节理清楚

环境部署推荐使用kind,用docker作为node,2c4g的机器也能轻松部署4个node的集群

名词解释

阅读全文 »

CS DNS beacon二次开发指北

接上一篇CobaltStrike beacon二开指南,这次把DNS beacon的写法也简要的讲一下。感觉写的东西还是有点玩具,所以依照惯例,还是把指南改成指北吧。。。
之前花了大功夫把geacon系列项目整的差不多了,感觉当初这么一个心血来潮的项目能整的这么成功,爽死了捏。当时的TODO上是写了实现DNS beacon的,但是感觉这个功能真的很拉跨加上流量特征极其明显加上不出网环境上马本身就有点玄学,如果有边界机就上代理之后再上马也行,反正就是各种buff叠起来导致感觉鸡肋的很,以及在安全客上看到有人发布了一版实现过的版本,就一直没写,但是最近有点闲的,一起写geacon pro的好兄弟又一直和我提起这个事,就乱写两笔试试算了捏。

写好的代码在geacon_pro的dns分支下,由于只是随手写的玩具,还有很多地方没修好,只测试了基本的命令执行,很多功能并未测试,以及很多功能也没实现,只是写出了一个实现的样例demon

pro转私有了,虽然网上可能能找到fork,但是有师傅提到了这个问题,就顺便缝合了一下也缝进plus了,顺便修了点之前的小问题。具体代码整个都在packet/dns.go下,外部代码没改啥,通信处有区别的地方加一个if判断改一下就行

碎碎念

阅读全文 »

Java内存马缝合笔记

之前渗透的时候遇到了一个java站,tomcat8跑的,能上传jsp,有shiro但是打不通(打通之后看了一眼无敌高版本)
jsp上传之后会急速被删,可以条件竞争去抢,这样子的话打一个内存马就是最稳整的,但是我是java垃圾捏,不会打,幸好天哥最后给了个现成的内存马
还有一个远古tomcat6的站,有一个jndi注入,最后也是靠whj好兄弟缝出来了一个tomcat6的回显打通,所以这波结束之后还是决定稍微学一下,就算不能懂原理,起码要缝出来一套能应对各个版本的内存马。。。以及遇到问题的时候起码有一套调试环境能排错

由于java水平有限,写出来的东西基本上都是从网上东拼西凑出来的,超级缝合怪,但是不得不说我缝合的水平真是越来越好了,因为感觉就大家的内存马理论都学得很好,我学点皮毛能用就行了,所以就叫缝合笔记8

3,2,1,开缝!

回显

阅读全文 »