Skip to content

Commit 9c1e599

Browse files
committed
Refactor styles and layout across components for improved consistency and readability. Updated Footer and Header styles, added responsive design elements, and enhanced the About page layout. Implemented pagination for blog and breakdowns pages, and adjusted global styles for better theming.
1 parent eccbc47 commit 9c1e599

File tree

10 files changed

+841
-359
lines changed

10 files changed

+841
-359
lines changed

src/components/Footer.astro

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ const today = new Date();
2828
<style>
2929
footer {
3030
padding: 2em 1em 6em 1em;
31-
background: linear-gradient(var(--gray-gradient)) no-repeat;
32-
color: rgb(var(--gray));
31+
background: var(--drac-bg-alt);
32+
color: var(--drac-comment);
3333
text-align: center;
3434
}
3535
.social-links {
@@ -40,9 +40,9 @@ const today = new Date();
4040
}
4141
.social-links a {
4242
text-decoration: none;
43-
color: rgb(var(--gray));
43+
color: var(--drac-cyan);
4444
}
4545
.social-links a:hover {
46-
color: rgb(var(--gray-dark));
46+
color: var(--drac-green);
4747
}
4848
</style>

src/components/Header.astro

Lines changed: 62 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
---
2-
import { Astro } from 'astro';
32
const navLinks = [
43
{ href: '/', label: 'Home' },
54
{ href: '/breakdowns/', label: '1Day Breakdowns' },
6-
{ href: '/about', label: 'About' },
5+
{ href: 'https://www.pwnfuzz.com', label: 'About', external: true },
76
];
87
---
9-
<header class="site-header">
8+
<header class="site-header" id="siteHeader">
9+
<head>
10+
<link rel="preconnect" href="https://fonts.googleapis.com">
11+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12+
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@700&display=swap" rel="stylesheet">
13+
</head>
1014
<div class="header-inner">
11-
<a href="/" class="site-logo">PwnFuzz<span> Labs</span></a>
15+
<a href="/" class="site-logo"><span class="logo-prompt">&gt;</span> <span class="logo-mono">PwnFuzz</span><span> Labs</span></a>
1216
<nav class="main-nav">
1317
<ul>
1418
{navLinks.map(link => (
15-
<li><a href={link.href} class={Astro.url.pathname.startsWith(link.href) && link.href !== '/' ? 'active' : (Astro.url.pathname === link.href ? 'active' : '')}>{link.label}</a></li>
19+
<li><a href={link.href} class={Astro.url.pathname.startsWith(link.href) && link.href !== '/' ? 'active' : (Astro.url.pathname === link.href ? 'active' : '')} target={link.external ? '_blank' : undefined} rel={link.external ? 'noopener' : undefined}>{link.label}</a></li>
1620
))}
1721
</ul>
1822
</nav>
@@ -21,9 +25,9 @@ const navLinks = [
2125
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@600;700&display=swap');
2226
.site-header {
2327
font-family: 'Inter', sans-serif;
24-
background: #fff;
25-
box-shadow: 0 2px 8px rgba(124, 58, 237, 0.06);
26-
border-bottom: 2px solid #e5e7eb;
28+
background: var(--drac-bg-alt);
29+
box-shadow: 0 2px 8px rgba(40,42,54,0.10);
30+
border-bottom: 2px solid var(--drac-selection);
2731
position: sticky;
2832
top: 0;
2933
z-index: 100;
@@ -39,13 +43,31 @@ const navLinks = [
3943
.site-logo {
4044
font-weight: 700;
4145
font-size: 1.4rem;
42-
color: #7c3aed;
46+
color: var(--drac-pink);
4347
letter-spacing: 1px;
4448
text-decoration: none;
49+
display: flex;
50+
align-items: center;
51+
gap: 0.2em;
52+
}
53+
.logo-prompt {
54+
font-family: 'JetBrains Mono', monospace;
55+
color: var(--drac-green);
56+
font-size: 1.3rem;
57+
font-weight: 700;
58+
margin-right: 0.1em;
59+
user-select: none;
60+
}
61+
.logo-mono {
62+
font-family: 'JetBrains Mono', monospace;
63+
font-size: 1.35rem;
64+
color: var(--drac-pink);
65+
font-weight: 700;
66+
letter-spacing: 0.5px;
4567
}
4668
.site-logo span {
4769
font-weight: 600;
48-
color: #333;
70+
color: var(--drac-fg);
4971
}
5072
.main-nav ul {
5173
display: flex;
@@ -55,7 +77,7 @@ const navLinks = [
5577
padding: 0;
5678
}
5779
.main-nav a {
58-
color: #222;
80+
color: var(--drac-cyan);
5981
text-decoration: none;
6082
font-weight: 600;
6183
font-size: 1rem;
@@ -64,8 +86,8 @@ const navLinks = [
6486
transition: border 0.2s, color 0.2s;
6587
}
6688
.main-nav a.active {
67-
color: #7c3aed;
68-
border-bottom: 2px solid #7c3aed;
89+
color: var(--drac-green);
90+
border-bottom: 2px solid var(--drac-green);
6991
}
7092
@media (max-width: 700px) {
7193
.header-inner {
@@ -81,5 +103,32 @@ const navLinks = [
81103
margin-bottom: 0.5rem;
82104
}
83105
}
106+
.site-header.hide-on-scroll {
107+
transform: translateY(-100%);
108+
transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
109+
}
110+
.site-header {
111+
transition: transform 0.35s cubic-bezier(0.4,0,0.2,1);
112+
}
84113
</style>
114+
<script is:inline>
115+
let lastScrollY = window.scrollY;
116+
let ticking = false;
117+
function onScroll() {
118+
if (!ticking) {
119+
window.requestAnimationFrame(() => {
120+
const header = document.getElementById('siteHeader');
121+
if (window.scrollY > lastScrollY && window.scrollY > 40) {
122+
header.classList.add('hide-on-scroll');
123+
} else {
124+
header.classList.remove('hide-on-scroll');
125+
}
126+
lastScrollY = window.scrollY;
127+
ticking = false;
128+
});
129+
ticking = true;
130+
}
131+
}
132+
window.addEventListener('scroll', onScroll);
133+
</script>
85134
</header>

src/content/blog/crushftp-cve-2025-2825/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ tags: ["CVE-2025-2825", "Java", "auth-bypass", "logic-flaw", "CrushFTP", "vulner
66
description: "Comprehensive analysis of CVE-2025-2825, a critical authentication bypass vulnerability in CrushFTP. Technical deep dive into the root cause of the vulnerability, patch analysis and exploitation process."
77
---
88

9-
After the [news](https://thehackernews.com/2025/03/new-security-flaws-found-in-vmware.html) made it’s way to my feeds, having worked on the CrushFTP’s [CVE-2024-4040](https://www.notion.so/CVE-2025-2825-1c553a570fe780998981fe4e2c1694e1?pvs=21) vulnerability analysis, this sounded like a good thing to do over and maybe I could write the exploit before anyone but unfortunately [Project Discovery](https://projectdiscovery.io/blog/crushftp-authentication-bypass) guys beat me to it. Anyways, enough story, let’s dive into the vulnerability:
9+
After the [news](https://thehackernews.com/2025/03/new-security-flaws-found-in-vmware.html) made it’s way to my feeds, having worked on the CrushFTP’s [CVE-2024-4040](https://labs.pwnfuzz.com/posts/crushftp-cve-2024-4040/) vulnerability analysis, this sounded like a good thing to do over and maybe I could write the exploit before anyone but unfortunately [Project Discovery](https://projectdiscovery.io/blog/crushftp-authentication-bypass) guys beat me to it. Anyways, enough story, let’s dive into the vulnerability:
1010

1111
> CrushFTP versions 10.0.0 through 10.8.3 and 11.0.0 through 11.3.0 are affected by a vulnerability that may result in unauthenticated access. Remote and unauthenticated HTTP requests to CrushFTP server may allow attackers to gain unauthorized access.
1212

src/layouts/BlogPost.astro

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
1313

1414
<html lang="en">
1515
<head>
16-
<BaseHead title={title} description={description} image={heroImage} />
16+
<BaseHead title={title} description={description} />
1717
<style>
1818
body {
19-
background: #f8fafc;
19+
background: var(--drac-bg);
20+
color: var(--drac-fg);
2021
}
2122
main {
2223
width: calc(100% - 2em);
@@ -29,32 +30,31 @@ const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
2930
.hero-image img {
3031
display: block;
3132
margin: 0 auto;
32-
border-radius: 12px;
33-
box-shadow: var(--box-shadow);
3433
}
3534
.prose {
36-
background: #fff;
37-
width: 1000px;
35+
width: 1250px;
3836
max-width: 100%;
3937
margin: auto;
4038
padding: 2.5rem 3rem 2.5rem 3rem;
41-
color: rgb(var(--gray-dark));
39+
color: var(--drac-fg);
4240
font-size: 1.04rem;
4341
line-height: 1.7;
42+
background: var(--drac-bg-alt);
43+
border-radius: 10px;
4444
}
4545
.toc-block {
46-
background: #fafdff;
47-
border: 1px dashed #e0e7ef;
46+
background: var(--drac-selection);
47+
border: 1px dashed var(--drac-comment);
4848
border-radius: 7px;
4949
padding: 0.7rem 0.8rem;
5050
font-size: 0.93rem;
5151
margin-bottom: 1.2rem;
52-
color: #6b7280;
52+
color: var(--drac-comment);
5353
}
5454
.toc-title {
5555
font-weight: 500;
5656
font-size: 0.99rem;
57-
color: #8b5cf6;
57+
color: var(--drac-purple);
5858
margin-bottom: 0.4rem;
5959
letter-spacing: 0.01em;
6060
}
@@ -67,22 +67,25 @@ const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
6767
margin-bottom: 0.32em;
6868
}
6969
.toc-link {
70-
color: #7c3aed;
70+
color: var(--drac-cyan);
7171
text-decoration: none;
7272
font-weight: 400;
7373
transition: color 0.2s;
7474
}
7575
.toc-link:hover {
76-
color: #5b21b6;
76+
color: var(--drac-green);
7777
text-decoration: underline;
7878
}
79-
.prose h1 {
79+
.prose h1, .title h1 {
80+
color: var(--drac-pink);
8081
font-size: 2.1rem;
8182
}
8283
.prose h2 {
84+
color: var(--drac-purple);
8385
font-size: 1.4rem;
8486
}
8587
.prose h3 {
88+
color: var(--drac-cyan);
8689
font-size: 1.18rem;
8790
}
8891
.title {
@@ -96,10 +99,27 @@ const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
9699
}
97100
.date {
98101
margin-bottom: 0.5em;
99-
color: rgb(var(--gray));
102+
color: var(--drac-comment);
100103
}
101104
.last-updated-on {
102105
font-style: italic;
106+
color: var(--drac-yellow);
107+
}
108+
code, pre {
109+
background: var(--drac-bg-alt);
110+
color: var(--drac-yellow);
111+
border-radius: 6px;
112+
padding: 0.2em 0.4em;
113+
font-family: 'Fira Mono', 'Consolas', 'Monaco', monospace;
114+
}
115+
pre {
116+
padding: 1.2em;
117+
overflow-x: auto;
118+
}
119+
hr {
120+
border: none;
121+
border-top: 1px solid var(--drac-comment);
122+
margin: 2em 0;
103123
}
104124
@media (max-width: 900px) {
105125
.prose {

src/pages/about.astro

Lines changed: 48 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,52 @@
11
---
2-
import Layout from '../layouts/BlogPost.astro';
2+
// Minimal About page for PwnFuzz Labs
33
---
44

5-
<Layout
6-
title="About PwnFuzz Labs – Deep Technical Security Research"
7-
description="PwnFuzz Labs is the research arm of PwnFuzz, focused on advanced exploit development, vulnerability analysis, and fuzzing methodologies. Explore technical deep-dives and offensive security insights curated by D4mianWayne."
8-
pubDate={new Date()}
9-
>
10-
<p>
11-
<strong>PwnFuzz Labs</strong> is the dedicated research division of PwnFuzz, delivering deep technical content on exploit development, vulnerability analysis, and offensive security tooling. This space is reserved for high-resolution insights into real-world attack surfaces—covering kernel internals, enterprise applications, protocol targets, and more.
12-
</p>
5+
<div class="about-dracula">
6+
<p>
7+
<strong>PwnFuzz Labs</strong> is the research arm of PwnFuzz, focused on advanced exploit development, vulnerability analysis, and fuzzing methodologies. For the main platform and more resources, visit <a href="https://www.pwnfuzz.com" target="_blank" rel="noopener">pwnfuzz.com</a>.
8+
</p>
9+
</div>
1310

14-
<h2>What is PwnFuzz Labs?</h2>
15-
<p>
16-
PwnFuzz Labs exists to document, dissect, and share advanced offensive security techniques. Every post is a technical walkthrough—whether reverse engineering complex CVEs, crafting custom fuzzers, or developing reliable exploits. The labs serve as a curated archive of research, tool development, and methodology experimentation.
17-
</p>
18-
19-
<h2>A Research-Driven Approach</h2>
20-
<p>
21-
Content published on PwnFuzz Labs emphasizes a research-first mindset-documenting failures, edge cases, patch analysis, mitigation bypasses, and exploitation primitives. Our goal is to push offensive understanding forward while maintaining clarity, rigor, and reproducibility.
22-
</p>
23-
24-
<h2>Learn More About Us</h2>
25-
<p>
26-
For an overview of PwnFuzz, its vision, and background, visit the main site. PwnFuzz Labs is an extension of that mission—built to support deeper experimentation and long-form research beyond standard write-ups.
27-
</p>
28-
29-
<h2>Disclaimer</h2>
30-
<p>
31-
All content published on PwnFuzz Labs is intended for <strong>educational and research purposes only</strong>. The techniques, code, and information shared here are meant to advance understanding of security concepts and responsible disclosure.<br/>
32-
We <strong>do not condone or support</strong> the use of this material for malicious purposes.<br/>
33-
<strong>PwnFuzz and its contributors assume no liability</strong> for any misuse or damage resulting from the application of knowledge shared on this platform.
34-
</p>
35-
</Layout>
11+
<style>
12+
body {
13+
background: var(--drac-bg);
14+
color: var(--drac-fg);
15+
font-family: 'Google Sans', 'Inter', Arial, sans-serif;
16+
margin: 0;
17+
padding: 0;
18+
}
19+
.about-dracula {
20+
display: flex;
21+
flex-direction: column;
22+
align-items: center;
23+
justify-content: center;
24+
min-height: 60vh;
25+
max-width: 600px;
26+
margin: 6rem auto 0 auto;
27+
font-size: 1.18rem;
28+
color: var(--drac-fg);
29+
background: var(--drac-bg-alt);
30+
border-radius: 14px;
31+
padding: 2.5rem 2rem;
32+
box-shadow: 0 2px 8px rgba(40,42,54,0.10);
33+
text-align: center;
34+
}
35+
.about-dracula a {
36+
color: var(--drac-cyan);
37+
text-decoration: underline;
38+
transition: color 0.2s;
39+
word-break: break-all;
40+
}
41+
.about-dracula a:hover {
42+
color: var(--drac-green);
43+
}
44+
@media (max-width: 600px) {
45+
.about-dracula {
46+
padding: 1.2rem 0.5rem;
47+
font-size: 1rem;
48+
margin: 2.5rem 0 0 0;
49+
border-radius: 8px;
50+
}
51+
}
52+
</style>

0 commit comments

Comments
 (0)