blitzstrike 2.4.162 → 2.4.164
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 +21 -0
- package/dist/index.js +26 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,27 @@ 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.164] — 2026-10-11
|
|
9
|
+
|
|
10
|
+
### Fixed — binary-search case regression on case-insensitive DBMS
|
|
11
|
+
|
|
12
|
+
- The binary-search charset is now DBMS-aware: MySQL/MSSQL (case-insensitive
|
|
13
|
+
default collation) use a lowercase-only set, so `> ` ordering isn't ambiguous
|
|
14
|
+
and extraction no longer returns wrong case (was "SECURITy"/"ROOT@LOCALHOST";
|
|
15
|
+
now "security"/"root@localhost"). Case-sensitive DBMS keep the full ASCII set.
|
|
16
|
+
- Verified end-to-end on sqli-labs Less-8 (blind boolean): oracle 5 SQL signals →
|
|
17
|
+
confirm both channels → extract version/database/user all correct case.
|
|
18
|
+
|
|
19
|
+
## [2.4.163] — 2026-10-11
|
|
20
|
+
|
|
21
|
+
### Added — cookie discovery in live_recon (hint-free injection surface)
|
|
22
|
+
|
|
23
|
+
- `live_recon` now reports cookies as name+value pairs (`cookies` field) parsed
|
|
24
|
+
from the Set-Cookie header(s), plus a next-step telling the LLM to probe each
|
|
25
|
+
with `blind_sqli_confirm`/`blind_sqli_extract`. Cookies (e.g. PortSwigger's
|
|
26
|
+
`TrackingId`) are a first-class injection surface invisible to URL/param scans;
|
|
27
|
+
this lets the LLM discover a cookie-based blind-SQLi point WITHOUT the lab hint.
|
|
28
|
+
|
|
8
29
|
## [2.4.162] — 2026-10-11
|
|
9
30
|
|
|
10
31
|
### Added — binary-search extraction + marker oracle (blind SQLi)
|
package/dist/index.js
CHANGED
|
@@ -37159,6 +37159,26 @@ function extractParams(urls) {
|
|
|
37159
37159
|
}
|
|
37160
37160
|
return [...params];
|
|
37161
37161
|
}
|
|
37162
|
+
function extractCookieNames(headers) {
|
|
37163
|
+
const sc = headers["set-cookie"] ?? "";
|
|
37164
|
+
if (!sc)
|
|
37165
|
+
return [];
|
|
37166
|
+
const out = [];
|
|
37167
|
+
const seen = new Set;
|
|
37168
|
+
for (const part of sc.split(",")) {
|
|
37169
|
+
const seg = part.trim().split(";")[0].trim();
|
|
37170
|
+
const eq = seg.indexOf("=");
|
|
37171
|
+
if (eq <= 0)
|
|
37172
|
+
continue;
|
|
37173
|
+
const name = seg.slice(0, eq).trim();
|
|
37174
|
+
const value = seg.slice(eq + 1).trim();
|
|
37175
|
+
if (/^[A-Za-z0-9_.-]+$/.test(name) && !seen.has(name)) {
|
|
37176
|
+
seen.add(name);
|
|
37177
|
+
out.push({ name, value });
|
|
37178
|
+
}
|
|
37179
|
+
}
|
|
37180
|
+
return out;
|
|
37181
|
+
}
|
|
37162
37182
|
async function subdomainEnum(domain) {
|
|
37163
37183
|
const out = new Set;
|
|
37164
37184
|
try {
|
|
@@ -37481,6 +37501,7 @@ async function liveRecon(target, includeActive = false) {
|
|
|
37481
37501
|
const allUrls = [...links, ...scripts, ...robots, ...sitemap];
|
|
37482
37502
|
const crawl = { links, scripts, endpoints: [...new Set(allUrls)], robots, sitemap, count: allUrls.length };
|
|
37483
37503
|
const params = extractParams(allUrls);
|
|
37504
|
+
const cookies = extractCookieNames(root.headers);
|
|
37484
37505
|
const [subRes, dnsRes, waybackRes, apiRes] = await Promise.all([
|
|
37485
37506
|
subdomainEnum(host),
|
|
37486
37507
|
dnsBrute(host),
|
|
@@ -37519,6 +37540,8 @@ async function liveRecon(target, includeActive = false) {
|
|
|
37519
37540
|
nextSteps.push(`Found ${crawl.endpoints.length} endpoints — feed them to taint_file/blitz_scan for source analysis, or strike_verify for live validation.`);
|
|
37520
37541
|
if (params.length > 0)
|
|
37521
37542
|
nextSteps.push(`Discovered input params: ${params.join(", ")} — these are attack-surface entry points; fuzz them with payload_lookup after scope confirms.`);
|
|
37543
|
+
if (cookies.length > 0)
|
|
37544
|
+
nextSteps.push(`Discovered cookies: ${cookies.map((c) => c.name).join(", ")} — cookies are a first-class injection surface (blind SQLi / XSS / auth) invisible to URL/param scans; probe each with blind_sqli_confirm + blind_sqli_extract (cookie= param).`);
|
|
37522
37545
|
if (subdomains.length > 0)
|
|
37523
37546
|
nextSteps.push(`Found ${subdomains.length} subdomains — each is a separate scope surface; enumerate further with fofa_search.`);
|
|
37524
37547
|
if (dnsFindings.length > 0)
|
|
@@ -37545,6 +37568,7 @@ async function liveRecon(target, includeActive = false) {
|
|
|
37545
37568
|
suggested_surfaces: surfaces.map((s) => ({ id: s.id, name: s.name, high_value_tests: s.high_value_tests, matched_fingerprints: s.hits })),
|
|
37546
37569
|
crawl,
|
|
37547
37570
|
params,
|
|
37571
|
+
cookies,
|
|
37548
37572
|
subdomains,
|
|
37549
37573
|
dns_findings: dnsFindings,
|
|
37550
37574
|
wayback_urls: wayback,
|
|
@@ -62635,7 +62659,8 @@ async function blindSqliExtract(baseUrl, param, value, dbms, target, opts = {})
|
|
|
62635
62659
|
}
|
|
62636
62660
|
}
|
|
62637
62661
|
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}_/.-:@";
|
|
62638
|
-
const
|
|
62662
|
+
const caseInsensitive = p.dbms === "mysql" || p.dbms === "mssql";
|
|
62663
|
+
const bsCharset = caseInsensitive ? "0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
62639
62664
|
const baseTpl = (channel === "time" ? p.extraction.time : p.extraction.boolean).replace(/^'/, ctx);
|
|
62640
62665
|
const render = (tpl, pos, ch) => `${value}${tpl.replace(/\{query\}/g, queryExpr).replace(/\{pos\}/g, String(pos)).replace(/\{char\}/g, ch).replace(/\{sec\}/g, "1")}`;
|
|
62641
62666
|
const isTrue = async (tpl, pos, ch) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.164",
|
|
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": {
|