How lethal can a bored eight-year-old with eyes glued to a computer screen be? +
whoami
How lethal can a bored eight-year-old with eyes glued to a computer screen be? Fasten your seatbelts, I’ve got first-hand experience. It all began with making “fake” malware in the batch programming language to annoy family members. I learned some web design and some C before spending eight semesters on a Java diff --git a/app.min.css b/app.min.css index 18b8edfa..188419aa 100644 --- a/app.min.css +++ b/app.min.css @@ -1 +1 @@ -:root{--gap:2.5rem;--y-gap:8rem;--wide:140rem;--narrow:80rem;--side:calc((var(--wide) - var(--narrow)) / 2);--header:8rem;--footer:calc(8rem + var(--safe-bottom));--light:255, 255, 255;--dark:22, 22, 22;--hljs-bg:#111;--safe-bottom:0}@supports(bottom:constant(safe-area-inset-bottom)){:root{--safe-bottom:constant(safe-area-inset-bottom)}}@supports(bottom:env(safe-area-inset-bottom)){:root{--safe-bottom:env(safe-area-inset-bottom)}}.dark{--light:22, 22, 22;--dark:255, 255, 255;--hljs-bg:#282828}*,*::before,*::after{box-sizing:border-box}html,body{height:100%}html{-webkit-tap-highlight-color:transparent;font-size:8px}body{--white:rgba(var(--light), 1);--black:rgba(var(--dark), 1);--pro:rgba(var(--dark), 1);--lit:rgba(var(--dark), 0.64);--air:rgba(var(--dark), 0.48);--fog:rgba(var(--dark), 0.12);display:flex;flex-direction:column;padding-right:var(--gap);padding-left:var(--gap);margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:2rem;line-height:1.8;color:var(--pro);word-break:break-word;background:var(--white);transition:background .4s ease-out}body>*{flex-shrink:0;width:100%;margin-inline:auto}.not-ready,.not-ready *{transition:none!important}@media(max-width:1199px){html{font-size:7px}}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit;font-weight:700;line-height:1.2}p{margin:0}strong,b{font-weight:500}ul,ol{padding:0;margin:0}a{color:inherit;text-decoration:none}table{width:100%;border-spacing:0;border-collapse:collapse}button,input,textarea{padding:0;font:inherit;background:0 0;border:0;outline:0;-webkit-appearance:none}button,input[type=button],input[type=submit]{cursor:pointer}input,textarea{padding:0;border:0}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 6rem var(--white)inset}img{display:block;max-width:100%}site-header{display:flex;max-width:var(--wide);height:var(--header);font-family:LeagueGothic;text-transform:uppercase;letter-spacing:1rem}site-header a{display:flex;flex-shrink:0;align-items:center}hero{margin-top:5.5rem;margin-left:var(--gap);display:flex;min-width:var(--side);padding-right:var(--gap)}.site-name{overflow:hidden;font-size:3.4rem;font-weight:700;white-space:nowrap}.btn-dark{width:3rem;margin-left:2rem;cursor:pointer;background:url(./theme.png)0/auto 3rem no-repeat;transition:background-position .4s steps(5)}.dark .btn-dark{background-position:100%}nav{display:flex;margin-left:auto;gap:1rem}nav a{width:1rem;height:1rem;padding:1.75rem;border:2px solid #0000;background:var(--url)center center no-repeat}nav a.active{outline:2px solid #000;border-radius:50%}.dark nav a{filter:invert(1)}@media(max-width:1199px){hero{min-width:auto}[data-menu=true]{--header:16rem}[data-menu=true] site-header{position:relative}[data-menu=true] site-header>*{height:calc(var(--header)/4)}[data-menu=true] .menu{position:absolute;inset:auto 0 0;border-bottom:1px solid var(--fog)}}.main{max-width:var(--narrow);min-height:calc(100% - var(--header) - var(--footer));padding-top:var(--y-gap);padding-bottom:var(--y-gap)}.main-title{margin-bottom:calc(var(--y-gap) + 1rem);font-size:3rem;font-weight:400;color:var(--lit)}paginator{display:flex;margin-top:5rem}paginator a{font-size:1.8rem;line-height:5.5rem;color:var(--white);background:var(--black);border-radius:.5rem;padding-inline:3rem}paginator .next{margin-left:auto}.post-entry{position:relative;padding-block:2rem;transition:transform .1s}.post-entry:first-of-type{margin-top:-2rem}.post-entry:active{transform:scale(.99)}.post-entry h2{margin-bottom:.2rem;font-size:3rem}.post-entry time{flex-shrink:0;font-size:1.7rem;color:var(--air)}.post-entry a{position:absolute;inset:0}.post-title{margin-bottom:calc(var(--y-gap) + 1rem)}.post-title p{display:flex;margin-bottom:1.5rem;font-size:1.6rem;color:var(--air);transform:translateY(.4rem)}.post-title p span::before{content:'·';margin-inline:.8rem}.post-title h1{font-size:5rem;transform:translateX(-.3rem)}.post-tags{margin-top:7rem}.post-tags a{display:inline-block;font-weight:500;line-height:5rem;color:var(--lit);background:rgba(var(--dark),.05);border-radius:.5rem;padding-inline:2rem}.post-tags a+a{margin-left:.5rem}post-nav{display:flex;justify-content:space-between;margin-top:var(--y-gap);background:rgba(var(--dark),.05);border-radius:.5rem}post-nav a{display:flex;align-items:center;width:50%;padding:var(--gap);font-size:2.4rem;font-weight:700;line-height:1.2}post-nav a span+span{margin-left:1rem}post-nav .prev{padding-right:1rem}post-nav .next{justify-content:flex-end;padding-left:1rem;margin-left:auto}.post-comments{margin-top:var(--y-gap)}@media(max-width:1199px){.post-title{display:block}.post-title aside{flex-direction:row;width:auto;padding-right:0;margin-bottom:.5rem;margin-left:0;transform:none}.post-title aside span::before{content:'·';margin-inline:.5rem}}.post-content{font-size:2.2rem}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{margin-block:2rem}.post-content h1{margin-top:var(--y-gap);font-size:4.5rem}.post-content h2{margin-top:6rem;font-size:3.5rem}.post-content h3{font-size:2.5rem}.post-content h4{font-size:2.2rem}.post-content h5{font-size:1.8rem}.post-content h6{font-size:1.5rem}.post-content img{margin-inline:auto}.post-content a{padding-bottom:.2rem;font-weight:500;border-bottom:2px solid var(--pro)}.post-content a code{margin-inline:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.post-content del{text-decoration:none;background:linear-gradient(to right,var(--pro) 100%,transparent 0)0/1px 1px repeat-x}.post-content p,.post-content ul,.post-content ol,.post-content dl,.post-content details{margin-bottom:3rem}.post-content ul,.post-content ol{padding-left:2.5rem}.post-content li{margin-top:.6rem}.post-content li p{margin-bottom:0}.post-content dl{display:flex;flex-wrap:wrap;margin:0}.post-content dt{width:25%;font-weight:500}.post-content dd{width:75%;padding-left:1.3rem;margin-left:0}.post-content dt~dt,.post-content dd~dd{margin-top:1.3rem}.post-content table{margin-bottom:4rem}.post-content table th,.post-content table:not(.highlighttable) td{min-width:10rem;padding:1.5rem 1rem;line-height:1.5;border-bottom:1px solid var(--fog)}.post-content table th{font-size:1.6rem;text-align:left}.post-content table:not(.highlighttable) td code:only-of-type{margin-inline:0}.post-content .highlight,.post-content pre{margin:0 calc(var(--gap) * -1)4rem;overflow-x:auto;background:var(--hljs-bg)!important;border-radius:.5rem}.post-content ul pre{margin-left:calc(var(--gap) * -2)}.post-content .highlight pre{margin-inline:0;margin-bottom:0}.post-content .highlighttable{table-layout:fixed}.post-content .highlighttable td:first-of-type{width:5rem}.post-content .highlighttable td .linenodiv{padding-right:0!important}.post-content .highlighttable td .linenodiv pre,.post-content .highlighttable td .highlight{margin-bottom:0}.post-content .highlighttable td .highlight pre code::-webkit-scrollbar{display:none}.post-content .highlight span{background:0 0!important}.post-content code{padding:.5rem 1rem;margin-inline:.5rem;font-family:Menlo,Monaco,courier new,Courier,monospace;font-size:.8em;line-height:1.5;background:rgba(var(--dark),.06);border-radius:.3rem}.post-content pre code{display:block;padding:var(--gap);margin-inline:0;color:rgba(255,255,255,.8);background:0 0;border-radius:0}.post-content blockquote{padding:0 0 0 calc(var(--gap) - .4rem);margin:0 0 0 calc(var(--gap) * -1);border-left:.4rem solid var(--pro)}.post-content hr{height:1px;background:var(--fog);border:0;margin-block:12rem}.post-content iframe{width:100%;background:var(--black)}.footer{display:flex;align-items:center;justify-content:center;max-width:var(--narrow);height:var(--footer);padding-bottom:var(--safe-bottom);margin-top:auto;font-size:1.6rem;color:var(--lit);border-top:1px solid var(--fog)}.footer p+p::before{content:'·';margin-inline:.6rem}.footer a:hover{color:var(--pro);border-bottom:1px solid var(--pro)}.title-404{display:flex;align-items:center;justify-content:center;height:100%;padding-bottom:8rem;font-size:16rem}site-header{z-index:1;--lava-background:var(--black);display:grid;position:relative;min-height:15rem;border-radius:1rem;width:100%;overflow:hidden}.lavasource{width:100%;height:4rem;background:var(--black)}site-header .bubbles{position:absolute;top:13rem;left:0;right:0;height:1rem;background:var(--lava-background);filter:url(#blob)}site-header .bubbles bubble{position:absolute;left:var(--position,50%);background:var(--lava-background);border-radius:100%;-webkit-animation:bubble-size var(--time,4s)ease-in infinite var(--delay,0s),bubble-move var(--time,4s)ease-in infinite var(--delay,0s);animation:bubble-size var(--time,4s)ease-in infinite var(--delay,0s),bubble-move var(--time,4s)ease-in infinite var(--delay,0s);transform:translate(-50%,100%)}@-webkit-keyframes bubble-size{0%,75%{width:var(--size,4rem);height:var(--size,4rem)}100%{width:0;height:0}}@keyframes bubble-size{0%,75%{width:var(--size,4rem);height:var(--size,4rem)}100%{width:0;height:0}}@-webkit-keyframes bubble-move{0%{bottom:-4rem}100%{bottom:var(--distance,10rem)}}@keyframes bubble-move{0%{bottom:-4rem}100%{bottom:var(--distance,10rem)}}@font-face{font-family:LeagueGothic;src:url(LeagueGothic.ttf)} \ No newline at end of file +:root{--gap:2.5rem;--y-gap:8rem;--wide:140rem;--narrow:80rem;--side:calc((var(--wide) - var(--narrow)) / 2);--header:8rem;--footer:calc(8rem + var(--safe-bottom));--light:255, 255, 255;--dark:22, 22, 22;--hljs-bg:#111;--safe-bottom:0}@supports(bottom:constant(safe-area-inset-bottom)){:root{--safe-bottom:constant(safe-area-inset-bottom)}}@supports(bottom:env(safe-area-inset-bottom)){:root{--safe-bottom:env(safe-area-inset-bottom)}}.dark{--light:22, 22, 22;--dark:255, 255, 255;--hljs-bg:#282828}*,*::before,*::after{box-sizing:border-box}html,body{height:100%}html{-webkit-tap-highlight-color:transparent;font-size:8px}body{--white:rgba(var(--light), 1);--black:rgba(var(--dark), 1);--pro:rgba(var(--dark), 1);--lit:rgba(var(--dark), 0.64);--air:rgba(var(--dark), 0.48);--fog:rgba(var(--dark), 0.12);display:flex;flex-direction:column;padding-right:var(--gap);padding-left:var(--gap);margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:2rem;line-height:1.8;color:var(--pro);word-break:break-word;background:var(--white);transition:background .4s ease-out}.sidebar-nav-item{}body>*{flex-shrink:0;width:100%;margin-inline:auto}.not-ready,.not-ready *{transition:none!important}@media(max-width:1199px){html{font-size:7px}}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit;font-weight:700;line-height:1.2}p{margin:0}strong,b{font-weight:500}ul,ol{padding:0;margin:0}a{color:inherit;text-decoration:none}table{width:100%;border-spacing:0;border-collapse:collapse}button,input,textarea{padding:0;font:inherit;background:0 0;border:0;outline:0;-webkit-appearance:none}button,input[type=button],input[type=submit]{cursor:pointer}input,textarea{padding:0;border:0}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 6rem var(--white)inset}img{display:block;max-width:100%}.header{display:flex;max-width:var(--wide);height:var(--header)}.header a{display:flex;flex-shrink:0;align-items:center}.logo{z-index:1000;margin-top:5rem;margin-left:var(--gap);display:flex;min-width:var(--side);padding-right:var(--gap)}.site-name{padding-bottom:.3rem;overflow:auto;font-size:3.4rem;font-weight:700;white-space:nowrap}.btn-dark{width:3rem;margin-left:2rem;cursor:pointer;background:url(./theme.png)0/auto 3rem no-repeat;transition:background-position .4s steps(5)}.dark .btn-dark{background-position:100%}.menu{display:flex;overflow:auto}.menu a{width:3rem}.menu a+a{margin-left:var(--gap)}.menu a.active{opacity:.44}.social{display:flex;margin-left:auto}.social a{width:1rem;height:1rem;padding:2rem;border:.35rem solid #0000;background:var(--url)center center no-repeat}.social a.active{border:.35rem solid #000;border-radius:50%}.social a+a{margin-left:var(--gap)}.dark .social a{filter:invert(1)}@media(max-width:1199px){.logo{min-width:auto}[data-menu=true]{--header:16rem}[data-menu=true] .header{position:relative}[data-menu=true] .header>*{height:calc(var(--header)/2)}[data-menu=true] .menu{position:absolute;inset:auto 0 0;border-bottom:1px solid var(--fog)}}.main{max-width:var(--narrow);min-height:calc(100% - var(--header) - var(--footer));padding-top:var(--y-gap);padding-bottom:var(--y-gap)}.main-title{margin-bottom:calc(var(--y-gap) + 1rem);font-size:3rem;font-weight:400;color:var(--lit)}.main-nav{display:flex;margin-top:5rem}.main-nav a{font-size:1.8rem;line-height:5.5rem;color:var(--white);background:var(--black);border-radius:.5rem;padding-inline:3rem}.main-nav .next{margin-left:auto}.post-entry{position:relative;padding-block:2rem;transition:transform .1s}.post-entry:first-of-type{margin-top:-2rem}.post-entry:active{transform:scale(.99)}.post-entry h2{margin-bottom:.2rem;font-size:3rem}.post-entry time{flex-shrink:0;font-size:1.7rem;color:var(--air)}.post-entry a{position:absolute;inset:0}.post-title{margin-bottom:calc(var(--y-gap) + 1rem)}.post-title p{display:flex;margin-bottom:1.5rem;font-size:1.6rem;color:var(--air);transform:translateY(.4rem)}.post-title p span::before{content:'·';margin-inline:.8rem}.post-title h1{font-size:5rem;transform:translateX(-.3rem)}.post-tags{margin-top:7rem}.post-tags a{display:inline-block;font-weight:500;line-height:5rem;color:var(--lit);background:rgba(var(--dark),.05);border-radius:.5rem;padding-inline:2rem}.post-tags a+a{margin-left:.5rem}.post-nav{display:flex;justify-content:space-between;margin-top:var(--y-gap);background:rgba(var(--dark),.05);border-radius:.5rem}.post-nav a{display:flex;align-items:center;width:50%;padding:var(--gap);font-size:2.4rem;font-weight:700;line-height:1.2}.post-nav a span+span{margin-left:1rem}.post-nav .prev{padding-right:1rem}.post-nav .next{justify-content:flex-end;padding-left:1rem;margin-left:auto}.post-comments{margin-top:var(--y-gap)}@media(max-width:1199px){.post-title{display:block}.post-title aside{flex-direction:row;width:auto;padding-right:0;margin-bottom:.5rem;margin-left:0;transform:none}.post-title aside span::before{content:'·';margin-inline:.5rem}}.post-content{font-size:2.2rem}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{margin-block:2rem}.post-content h1{margin-top:var(--y-gap);font-size:4.5rem}.post-content h2{margin-top:6rem;font-size:3.5rem}.post-content h3{font-size:2.5rem}.post-content h4{font-size:2.2rem}.post-content h5{font-size:1.8rem}.post-content h6{font-size:1.5rem}.post-content img{margin-inline:auto}.post-content a{padding-bottom:.2rem;font-weight:500;border-bottom:2px solid var(--pro)}.post-content a code{margin-inline:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.post-content del{text-decoration:none;background:linear-gradient(to right,var(--pro) 100%,transparent 0)0/1px 1px repeat-x}.post-content p,.post-content ul,.post-content ol,.post-content dl,.post-content details{margin-bottom:3rem}.post-content ul,.post-content ol{padding-left:2.5rem}.post-content li{margin-top:.6rem}.post-content li p{margin-bottom:0}.post-content dl{display:flex;flex-wrap:wrap;margin:0}.post-content dt{width:25%;font-weight:500}.post-content dd{width:75%;padding-left:1.3rem;margin-left:0}.post-content dt~dt,.post-content dd~dd{margin-top:1.3rem}.post-content table{margin-bottom:4rem}.post-content table th,.post-content table:not(.highlighttable) td{min-width:10rem;padding:1.5rem 1rem;line-height:1.5;border-bottom:1px solid var(--fog)}.post-content table th{font-size:1.6rem;text-align:left}.post-content table:not(.highlighttable) td code:only-of-type{margin-inline:0}.post-content .highlight,.post-content pre{margin:0 calc(var(--gap) * -1)4rem;overflow-x:auto;background:var(--hljs-bg)!important;border-radius:.5rem}.post-content ul pre{margin-left:calc(var(--gap) * -2)}.post-content .highlight pre{margin-inline:0;margin-bottom:0}.post-content .highlighttable{table-layout:fixed}.post-content .highlighttable td:first-of-type{width:5rem}.post-content .highlighttable td .linenodiv{padding-right:0!important}.post-content .highlighttable td .linenodiv pre,.post-content .highlighttable td .highlight{margin-bottom:0}.post-content .highlighttable td .highlight pre code::-webkit-scrollbar{display:none}.post-content .highlight span{background:0 0!important}.post-content code{padding:.5rem 1rem;margin-inline:.5rem;font-family:Menlo,Monaco,courier new,Courier,monospace;font-size:.8em;line-height:1.5;background:rgba(var(--dark),.06);border-radius:.3rem}.post-content pre code{display:block;padding:var(--gap);margin-inline:0;color:rgba(255,255,255,.8);background:0 0;border-radius:0}.post-content blockquote{padding:0 0 0 calc(var(--gap) - .4rem);margin:0 0 0 calc(var(--gap) * -1);border-left:.4rem solid var(--pro)}.post-content hr{height:1px;background:var(--fog);border:0;margin-block:12rem}.post-content iframe{width:100%;background:var(--black)}.footer{display:flex;align-items:center;justify-content:center;max-width:var(--narrow);height:var(--footer);padding-bottom:var(--safe-bottom);margin-top:auto;font-size:1.6rem;color:var(--lit);border-top:1px solid var(--fog)}.footer p+p::before{content:'·';margin-inline:.6rem}.footer a:hover{color:var(--pro);border-bottom:1px solid var(--pro)}.title-404{display:flex;align-items:center;justify-content:center;height:100%;padding-bottom:8rem;font-size:16rem}.header{margin-bottom:5rem}body .lava{z-index:1;--lava-background:var(--black);display:grid;position:relative;min-height:15rem;border-radius:1rem;width:100%;overflow:hidden}.lavasource{width:100%;height:5rem;background:var(--black)}body .lava .bubbles{position:absolute;top:11rem;left:0;right:0;height:1rem;background:var(--lava-background);filter:url(#blob)}body .lava .bubbles .bubble{position:absolute;left:var(--position,50%);background:var(--lava-background);border-radius:100%;-webkit-animation:bubble-size var(--time,4s)ease-in infinite var(--delay,0s),bubble-move var(--time,4s)ease-in infinite var(--delay,0s);animation:bubble-size var(--time,4s)ease-in infinite var(--delay,0s),bubble-move var(--time,4s)ease-in infinite var(--delay,0s);transform:translate(-50%,100%)}.header{font-family:LeagueGothic;text-transform:uppercase;letter-spacing:1rem}@-webkit-keyframes bubble-size{0%,75%{width:var(--size,4rem);height:var(--size,4rem)}100%{width:0;height:0}}@keyframes bubble-size{0%,75%{width:var(--size,4rem);height:var(--size,4rem)}100%{width:0;height:0}}@-webkit-keyframes bubble-move{0%{bottom:-4rem}100%{bottom:var(--distance,10rem)}}@keyframes bubble-move{0%{bottom:-4rem}100%{bottom:var(--distance,10rem)}}@font-face{font-family:LeagueGothic;src:url(LeagueGothic.ttf)} \ No newline at end of file diff --git a/art/index.html b/art/index.html index a31c8f0c..b649ae64 100644 --- a/art/index.html +++ b/art/index.html @@ -1,134 +1,6 @@ -
All the art I make is licensed under Creative Commons
+ All the art I make is licensed under Creative Commons
Attribution-ShareAlike 4.0 International
license unless
specified otherwise. Please read the legal code before redistributing, adapting
diff --git a/art/somebody-that-i-used-to-know/index.html b/art/somebody-that-i-used-to-know/index.html
index 85b8a071..ee231708 100644
--- a/art/somebody-that-i-used-to-know/index.html
+++ b/art/somebody-that-i-used-to-know/index.html
@@ -1,132 +1,4 @@
- Apr 17, 2022 Reminds you of some song by
+ Apr 17, 2022 Reminds you of some song by
Gotye? You’re right on track. Jul 23, 2022 A painting of the lead vocalist of Twenty Øne Piløts. I named the piece
+ Jul 23, 2022 A painting of the lead vocalist of Twenty Øne Piløts. I named the piece
after one of my favorite songs from their album Vessel. Check out the
timelapse video available over at Odysee. Privacy, something we expect as a default, is dwindling at an unimaginable rate
+Basic Preferences Let’s make the easiest first step, for each of the following preferences, either head to the specified category under the about:preferences page or click the headings themselves."> Privacy, something we expect as a default, is dwindling at an unimaginable rate
when it comes to browsers. From amidst the sea of mostly chromium based browsers
like Google Chrome, Opera and Edge, I’d pick Firefox despite the handful of
questionable decisions made in the past by the parent company, Mozilla. Here’s
how I prefer hardening my Firefox setup. Let’s make the easiest first step, for each of the following preferences, either head to the specified category under the Under this section, go to each entry’s Now, this might sound counterintuitive but it gets clear if you click the Learn more link. Here’s an excerpt from the article. Firefox will submit some information about the file, including the name, origin, size and a cryptographic hash of the contents, to the Google Safe Browsing service which helps Firefox determine whether or not the file should be blocked. I’d not touch a privacy invasive company like Google with a 40 feet long pole. Under the I prefer a minimal use of extensions. Speaking of extensions, a good first step is to disable the Pocket extension. Head to Here’s a list of config keys and respective values we need to set them to: This might break some things like WebVNC and online games. Assuming you’re privacy oriented, it’s better off not using WebGL. There’s only one extension I use, Let’s come back to why we set Assume you have a personal GitHub account but also manage an organization account. You want to sign into both of these accounts at the same time. On your home page, start by choosing Here are some sites that make up for the aforementioned lack of extensions: Some people use Bitwarden’s browser extension for password management. I prefer using old school KeePassXC on my host with the password database protected with a strong password. With that, I’ll conclude this browser hardening post. Although this is in no
way exhaustive in terms of hardening techniques, I hope you have learnt
something new and remember, if your threat model asks for it, the Tor Browser
-on Tails or Whonix might be your best bet. Bye! We’ve all been there. That one CTF that wants to test your object oriented skills by confining you to a python jail.
+Here is a cool video explanation by @pwnfunction on server side template injection wherein he mentions a way to “gadget” our way out of Flask’s Jinja2 backend to get remote code execution. Kudos to him for sharing this technique."> We’ve all been there. That one CTF that wants to test your object oriented skills by confining you to a python jail.
Additionally some might even keep Here is a cool video explanation by @pwnfunction on server side template
injection wherein he mentions a way to “gadget” our way out of Flask’s Jinja2 backend to get remote code execution.
Kudos to him for sharing this technique. For those of you reluctant to watch a 10 minute video (although I’d highly recommend watching it), here’s the gist of it: There you have it! This payload will work as long as there is at least one subclass in the subclasses list
-which makes use of Thanks for giving this a read! Thanks for giving this a read! This challenge asks for python code as an input, converts it into an AST (abstract syntax tree) and if there aren’t any function calls or imports, executes the code. Our goal here is to avoid explicitly calling any functions yet reading the flag located at We shall, however, first find all the modules in This challenge asks for python code as an input, converts it into an AST (abstract syntax tree) and if there aren’t any function calls or imports, executes the code. Our goal here is to avoid explicitly calling any functions yet reading the flag located at We shall, however, first find all the modules in This writeup is rather haphazard as I jumped around from one place to another
+git clone git@haugfactory.com:asnowball/aws_scripts.git We can clone this the HTTPS way:"> This writeup is rather haphazard as I jumped around from one place to another
solving different unrelated challenges. Although the writeup covers all the
challenges, it definitely is not sequential. Just wanted to point that out
before diving in. This challenge wants us to clone a git repository. It’s using git with ssh for
@@ -752,5 +624,5 @@ silver ring. Now the payload becomes the following: We paste the name of this file The idea is simple: Since the mileage for second step might vary from person to person, I’ll elaborate on the first step. I chose jdupes as my weapon of choice for finding and removing the duplicates.
+For a given folder we would run the following to wipe the duplicates:"> The idea is simple: Since the mileage for second step might vary from person to person, I’ll elaborate on the first step. I chose jdupes as my weapon of choice for finding and removing the duplicates.
It’s free and open-source and is cross platform. For a given folder we would run the following to wipe the duplicates: Let me explain the flags: The Please read the tool’s help page for more granular control during the cleanup. The computer in question runs Microsoft Windows and there’s a thing
common in almost all Windows setups, drives. This was a glaring issue. There could be files that are unique in a given drive but are actually duplicates
@@ -145,5 +17,5 @@ traverse the hardlinks and find duplicates in the inter-drive space. Next,
Finally we remove the hardlinks: Note: Do not run jdupes at Somebody That I Used To Know
Somebody That I Used To Know

Truce
Truce
![]()
Java Code Analysis!?! - Web Challenge | PicoCTF 2023
+Java Code Analysis!?! - Web Challenge | PicoCTF 2023
Java Script Kiddie 2 - Web Challenge | PicoCTF 2019
Some Assembly Required 3 - Web Challenge | PicoCTF 2021
Kringlecon 2022 Writeup
@@ -138,4 +10,4 @@
Google CTF 2022 Treebox
RingZer0 CTF I Saw a Little Elf
RingZer0 CTF Hash Me Reloaded
-RingZer0 CTF Hash Me Please
+RingZer0 CTF Hash Me Please
Oh my God, they killed Kenny!
RingZer0 CTF Bash Jail 3
RingZer0 CTF Bash Jail 2
@@ -138,4 +10,4 @@
Liberating 14GiB of disk space
PicoCTF web challenge: Notepad
Gadgeting in Python Jails
-A Reasonably Private Firefox Setup
A Reasonably Private Firefox Setup
Basic Preferences
about:preferences page or click the headings themselves.Home Preferences
Homepage and new windows to about:profiles. I’ll talk more on this later.New tabs to Blank Page.Firefox Home Content.Search Preferences
Default Search Engine to DuckDuckGo. If you prefer using something like SearX, Qwant or StartPage, feel free to use those but please, no Google, Bing or Yahoo.Search Suggestions.Privacy Preferences
Enhanced Tracking Protection to Strict.Delete cookies and site data when Firefox is closed. This does mean that you’ll have to log into your accounts every browser session. I’d rather sacrifice this slight convenience for better privacy.Ask to save logins and passwords for websites and Show alerts about passwords for breached websites under Login and Passwords.History settings
Use custom settings for history.Always use private browsing mode if checked.Remember browsing and download history and Remember serach and form history.Clear history when Firefox closes.Address Bar Settings
Browsing history from the suggestion list.Permission Settings
settings page and check Block new requests. You may not want to block certain permissions according to your workflow. However, I like my browser to be a tool to view pages on the internet and not an over-permissioned mess spying on me. Set Autoplay to Block Audio and Video because rickrolls are more annoying than funny nowadays.Data Collection Settings
Firefox Data Collection and Use.Block dangerous and deceptive content.HTTPS-Only Mode choose Enable HTTPS-Only Mode in all windows.Additional Preferences
about:config and accept the warning because we know what we’re doing. Search for extensions.pocket.enabled and set it to false.Disable Telemetry
browser.ping-centre: falsetoolkit.telemetry.enabled: falsetoolkit.telemetry.server: (Clear the URL)browser.tabs.crashReporting.sendReporting: falseidentity.fxaccouts.enabled: falseDisable Location
geo.enabled: falseDisable queries to Google Safebrowsing
browser.safebrowsing.malware.enabled: falseDisable DNS prefetch
network.dns.disablePrefetch: truenetwork.dns.disablePrefetchFromHTTPS: truenetwork.dns.prefetch-next: trueDisable notifications
dom.webnotification.enabled: falseBlock battery queries
dom.battery.enabled: false.Disable referring website notifications
network.http.sendRefererHeader: falseDisable PDF scripting exploits
pdfjs.enableScripting: falseDisable WebGL
webgl.disabled: trueExtensions
UBlock Origin. It’s a fantastic ad-blocker out of the box and its functionality can be extended to block a plethora of APIs and elements on a site. If you wish to be a UBO power-user, read more here.Utilizing Profiles
Homepage and new windows to about:profiles earlier. If we restart Firefox now, we’ll be greeted with About Profiles. Here, we can create and use multiple profiles. These profiles, even when running simultaneously, are isolated from each other.Create a New Profile > Next > set a profile name (say, personal) > Next. Now you can click Launch profile in new browser to have a slice completely isolated from your default browser profile.Alternatives To Extensions
Gadgeting in Python Jails
Gadgeting in Python Jails
builtins and eval out of reach.''.__class__
@@ -233,4 +105,4 @@ of them, thereby executing the system commands..modules['os']
.popen('id').read()
sys. With that, our object oriented quest has come to an end.sys. With that, our object oriented quest has come to an end.Google CTF 2022 Treebox
flag. We also can’t import any modules explicitly. If we read the source code provided for the challenge, we can observe that the sys module is already imported. We can piggyback on this fact to use its modules.sys.modules that have a get_data like function in their __loader__ attribute. To do so, we run the following locally:import sys
+Google CTF 2022 Treebox
flag. We also can’t import any modules explicitly. If we read the source code provided for the challenge, we can observe that the sys module is already imported. We can piggyback on this fact to use its modules.sys.modules that have a get_data like function in their __loader__ attribute. To do so, we run the following locally:import sys
for name, handle in sys.modules.items():
if loader := getattr(handle, '__loader__'):
@@ -161,5 +33,5 @@
# Raise the exception
raise Read
-Java Code Analysis!?! - Web Challenge | PicoCTF 2023
+Java Code Analysis!?! - Web Challenge | PicoCTF 2023
Java Script Kiddie 2 - Web Challenge | PicoCTF 2019
Some Assembly Required 3 - Web Challenge | PicoCTF 2021
Kringlecon 2022 Writeup
@@ -138,4 +10,4 @@
Google CTF 2022 Treebox
RingZer0 CTF I Saw a Little Elf
RingZer0 CTF Hash Me Reloaded
-Kringlecon 2022 Writeup
Kringlecon 2022 Writeup
Clone with a Difference

goldring-morethansupertopsecret76394734.png in
our objective and that finishes this challenge. Moral: don’t underestimate NPC
-dialogues.Liberating 14GiB of disk space
Liberating 14GiB of disk space
jdupes -rdNz .
Flag Explanation rFind duplicates recursively dDelete duplicates NNo-prompt: when used with the d flag, it keeps the first file and removes all the others in a collection of duplicateszConsider zero length files to be duplicates . here means the current directory.rm A:\Edrive
SYSTEMROOT (C: drive for most people)
as there are legitimate duplicates which, if deleted, can brick a system. I’d recommend
-running jdupes in individual directories like Music, Documents, etc.
Oh my God, they killed Kenny!
Introduction
Despite being infamous for its profanity and dark, satiric humor, I’ve been a huge fan of South Park over the years. Now, before you walk away saying, “Screw you guys, I’m going home”, I’d like you to try out a random episode of South Park. While you certainly can visit the official website to watch a random episode, today’s post will explain a tiny bash script to watch one without launching the browser.
Prerequisites:
- A POSIX compliant shell
mpvyoutube-dloryt-dlpjq- busybox utilities like
curlandgrep
Gone scripting
South Park’s official website has a route called random-episode which redirects us to, well, a random episode.
+
Oh my God, they killed Kenny!
Introduction
Despite being infamous for its profanity and dark, satiric humor, I’ve been a huge fan of South Park over the years. Now, before you walk away saying, “Screw you guys, I’m going home”, I’d like you to try out a random episode of South Park. While you certainly can visit the official website to watch a random episode, today’s post will explain a tiny bash script to watch one without launching the browser.
Prerequisites:
- A POSIX compliant shell
mpvyoutube-dloryt-dlpjq- busybox utilities like
curlandgrep
Gone scripting
South Park’s official website has a route called random-episode which redirects us to, well, a random episode.
The catch, however, is that the redirection is done using javascript instead of regular HTTP status codes like 302.
This meant, one couldn’t simply run the following and expect to see a video.
mpv https://southparkstudios.com/random-episode
Let’s try being a little creative to see what the page returns.
curl -L https://southparkstudios.com/random-episode
@@ -198,5 +70,5 @@ the beginning and the end of the JSON structure. We will also use the -o
grep -Po '{"type.+}' | \
jq -r .children[0].children[0].props.items.items[0].path \
)
-RingZer0 CTF Hash Me Please
+RingZer0 CTF Hash Me Please
Oh my God, they killed Kenny!
RingZer0 CTF Bash Jail 3
RingZer0 CTF Bash Jail 2
@@ -138,4 +10,4 @@Liberating 14GiB of disk space
PicoCTF web challenge: Notepad
Gadgeting in Python Jails
-Pixelated - Cryptography challenge | PicoCTF 2021
Hey folks! It’s been quite a while since I’ve made any CTF related posts. +Introduction This challenge gives use two images and asks us if we can make a flag out of them. At first glance, both the images look like noise. Upon a quick web lookup of visual cryptography, it appears that these separate images, known as shares of the original image, can be overlayed on each other to reconstruct the original image.">
Pixelated - Cryptography challenge | PicoCTF 2021
Hey folks! It’s been quite a while since I’ve made any CTF related posts. Hope this post and the subsequent ones will help me regain some momentum.
Introduction
This challenge gives use two images and asks us if we can make a flag out of them.
At first glance, both the images look like noise. Upon a quick web lookup of
visual cryptography, it appears
@@ -191,5 +63,5 @@ in variables a and b.
}
After saving this file, we place the images in the current directory. Let’s compile and run the program.
cargo run
-Viewing “flag.png” shows us the flag in pixelated text.
![]()
Viewing “flag.png” shows us the flag in pixelated text.
![]()
Operation Oni, Operation Orchid - Forensics Challenges | PicoCTF 2022
In this post, we’ll walk through the Operation Oni and Operation Orchid challenges +ssh -i key_file -p 61948 ctf-player@saturn.">
Operation Oni, Operation Orchid - Forensics Challenges | PicoCTF 2022
In this post, we’ll walk through the Operation Oni and Operation Orchid challenges from the PicoCTF competition held in March 2022. Both of these challenges involve the use of tools from The Sleuth Kit suite. In order to follow along, I’d recommend installing the suite of tools.
Operation Oni
The challenge has an associated instance which we’ll need to log into using SSH using @@ -290,5 +162,5 @@ Using -iter or -pbkdf2 would be better. bad decrypt 140377178797312:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:610: picoCTF{h4un71ng_p457_17237fce} -
There we have it, we’ve captured the flag.
There we have it, we’ve captured the flag.
PicoCTF web challenge: JAuth
The challenge description states that most web application developers use third party components without testing their security. +The challenge is a dummy bank portal. On login, we see the message:">
PicoCTF web challenge: JAuth
The challenge description states that most web application developers use third party components without testing their security. It mentions some past affected companies, then asks us to identify and exploit the vulnerable component for the challenge at http://saturn.picoctf.net:52025/
The goal is to become an admin.
We are provied with the username test and the password Test123! to look around.
The challenge is a dummy bank portal. On login, we see the message:
Hello, You have logged in the testing page. There is nothing to see here.
While logging in, if we check the network requests and responses,
we can see a cookie named token being set.
Set-Cookie: token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoIjoxNjQ1NTE4MjkzMTE5LCJhZ2VudCI6Ik1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NDsgcnY6OTcuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC85Ny4wIiwicm9sZSI6InVzZXIiLCJpYXQiOjE2NDU1MTgyOTN9.dy45xnUb62Xnhqgo51JmGWRthAUGS-3jKwQ_RlDYCrw; path=/; httponly
@@ -204,5 +76,5 @@ The trailing dot following the encoded payload must be present.So, I wrot
fmt.Printf("Forged token: %v\n", strings.Join(parts, "."))
}
Now we run:
go run main.go eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdXRoIjoxNjQ1NTE4MjkzMTE5LCJhZ2VudCI6Ik1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NDsgcnY6OTcuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC85Ny4wIiwicm9sZSI6InVzZXIiLCJpYXQiOjE2NDU1MTgyOTN9.dy45xnUb62Xnhqgo51JmGWRthAUGS-3jKwQ_RlDYCrw
-which gives forged token: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJhZ2VudCI6Ik1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NDsgcnY6OTcuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC85Ny4wIiwiYXV0aCI6MTY0NTUxODI5MzExOSwiaWF0IjoxNjQ1NTE4MjkzLCJyb2xlIjoiYWRtaW4ifQ.
Manually setting the cookie to this value, we are redirected to the admin page.
Hello, admin! You have logged in as admin!
and we are greeted with the flag picoCTF{succ3ss_@u7h3nt1c@710n_57072644}
which gives forged token: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJhZ2VudCI6Ik1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NDsgcnY6OTcuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC85Ny4wIiwiYXV0aCI6MTY0NTUxODI5MzExOSwiaWF0IjoxNjQ1NTE4MjkzLCJyb2xlIjoiYWRtaW4ifQ.
Manually setting the cookie to this value, we are redirected to the admin page.
Hello, admin! You have logged in as admin!
and we are greeted with the flag picoCTF{succ3ss_@u7h3nt1c@710n_57072644}