2022-09-02 09:05:59 +02:00
<!doctype html>
< html lang = "en" >
< center >
< head >
< script src = "https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.js" > < / script >
2022-09-09 15:41:05 +02:00
< script src = "https://code.jquery.com/jquery-3.5.1.min.js" > < / script >
< script type = "text/javascript" src = "/static/js/auto-complete.js" > < / script >
< script type = "text/javascript" src = "/static/js/lunr.min.js" > < / script >
< script type = "text/javascript" src = "/static/js/search.js" > < / script >
2022-09-02 09:05:59 +02:00
< link rel = "stylesheet" href = "/static/stylesheet.css" >
< link rel = "stylesheet" href = "/static/auto-complete.css" >
< br >
2022-09-09 15:41:05 +02:00
< title > The Real Hugo< / title >
2022-09-02 09:05:59 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< / head >
< body >
<!-- topmenu -->
< div class = "menu" >
2022-09-09 15:41:05 +02:00
< a href = "/" style = "text-decoration:none" > Husk< / a >
2022-09-02 09:05:59 +02:00
< / div >
< div class = "search-container" >
< label for = "search-by" > < i class = "fas fa-search" > < / i > < / label >
< input data-search-input = "" id = "search-by" type = "search" placeholder = "Search..." autocomplete = "off" >
<!-- button type="submit"><i class="search"></i>🔍</button> -->
< span data-search-clear = "" > < i class = "fas fa-times" > < / i > < / span >
< / div >
< / div >
< div class = "menu" >
< / div >
<!-- br><br -->
< / center >
< p > < / p >
< div class = "columns" >
<!-- Sidebar -->
< div class = "column column-1" >
2022-09-09 15:41:05 +02:00
< ul > < details id = enumeration ontoggle = "linkClick(this); return false;" > < summary > Enumeration< / summary > < ul > < details id = containers ontoggle = "linkClick(this); return false;" > < summary > Containers< / summary > < ul > < / ul > < / details > < details id = docs ontoggle = "linkClick(this); return false;" > < summary > Docs< / summary > < ul > < li > < a href = "/enumeration/docs/aws.html" > aws< / a > < / li > < li > < a href = "/enumeration/docs/cewl.html" > cewl< / a > < / li > < li > < a href = "/enumeration/docs/dns.html" > dns< / a > < / li > < li > < a href = "/enumeration/docs/docker_enumeration.html" > docker_enumeration< / a > < / li > < li > < a href = "/enumeration/docs/ffuf.html" > ffuf< / a > < / li > < li > < a href = "/enumeration/docs/gobuster.html" > gobuster< / a > < / li > < li > < a href = "/enumeration/docs/kerberoast.html" > kerberoast< / a > < / li > < li > < a href = "/enumeration/docs/kubectl.html" > kubectl< / a > < / li > < li > < a href = "/enumeration/docs/ldap.html" > ldap< / a > < / li > < li > < a href = "/enumeration/docs/linux_basics.html" > linux_basics< / a > < / li > < li > < a href = "/enumeration/docs/microk8s.html" > microk8s< / a > < / li > < li > < a href = "/enumeration/docs/nfs.html" > nfs< / a > < / li > < li > < a href = "/enumeration/docs/nikto.html" > nikto< / a > < / li > < li > < a href = "/enumeration/docs/nmap.html" > nmap< / a > < / li > < li > < a href = "/enumeration/docs/port_knocking.html" > port_knocking< / a > < / li > < li > < a href = "/enumeration/docs/rpcclient.html" > rpcclient< / a > < / li > < li > < a href = "/enumeration/docs/rsync.html" > rsync< / a > < / li > < li > < a href = "/enumeration/docs/rustscan.html" > rustscan< / a > < / li > < li > < a href = "/enumeration/docs/shodan.html" > shodan< / a > < / li > < details id = snmp ontoggle = "linkClick(this); return false;" > < summary > Snmp< / summary > < ul > < li > < a href = "/enumeration/docs/snmp/onesixtyone.html" > onesixtyone< / a > < / li > < li > < a href = "/enumeration/docs/snmp/snmpcheck.html" > snmpcheck< / a > < / li > < / ul > < / details > < li > < a href = "/enumeration/docs/websites.html" > websites< / a > < / li > < li > < a href = "/enumeration/docs/wfuzz.html" > wfuzz< / a > < / li > < li > < a href = "/enumeration/docs/wpscan.html" > wpscan< / a > < / li > < / ul > < / details > < details id = network_scanners ontoggle = "linkClick(this); return false;" > < summary > Network_scanners< / summary > < ul > < / ul > < / details > < details id = windows ontoggle = "linkClick(this); return false;" > < summary > Windows< / summary > < ul > < li > < a href = "/enumeration/windows/bloodhound.html" > bloodhound< / a > < / li > < li > < a href = "/enumeration/windows/event_log.html" > event_log< / a > < / li > < li > < a href = "/enumeration/windows/manual_enum.html" > manual_enum< / a > < / li > < li > < a href = "/enumeration/windows/powershell.html" > powershell< / a > < / li > < li > < a href = "/enumeration/windows/rpcclient.html" > rpcclient< / a > < / li > < li > < a href = "/enumeration/windows/sysinternals.html" > sysinternals< / a > < / li > < li > < a href = "/enumeration/windows/sysmon.html" > sysmon< / a > < / li > < li > < a href = "/enumeration/windows/vss.html" > vss< / a > < / li > < / ul > < / details > < / ul > < / details > < details id = exploit ontoggle = "linkClick(this); return false;" > < summary > Exploit< / summary > < ul > < details id = CPUs ontoggle = "linkClick(this); return false;" > < summary > CPUs< / summary > < ul > < li > < a href = "/exploit/CPUs/meltdown.html" > meltdown< / a > < / li > < / ul > < / details > < details id = binaries ontoggle = "linkClick(this); return false;" > < summary > Binaries< / summary > < ul > < li > < a href = "/exploit/binaries/Shellcode.html" > Shellcode< / a > < / li > < li > < a href = "/exploit/binaries/aslr.html" > aslr< / a > < / li > < details id = buffer_overflow ontoggle = "linkClick(this); return false;" > < summary > Buffer_overflow< / summary > < ul > < details id = docs ontoggle = "linkClick(this); return false;" > < summary > Docs< / summary > < ul > < li > < a href = "/exploit/binaries/buffer_overflow/docs/amd64.html" > amd64< / a > < / li > < li > < a href = "/exploit/binaries/buffer_overflow/docs/amd64_instructions.html" > amd64_instructions< / a > < / li > < li > < a href = "/exploit/binaries/buffer_overflow/docs/buffer_overflow.html" > buffer_overflow< / a > < / li > < li > < a href = "/exploit/binaries/buffer_overflow/docs/cut_stack_in_half.html" > cut_stack_in_half< / a > < / li > < li > < a href = "/exploit/binaries/buffer_overflow/docs/pwntools_specifics.html" > pwntools_specifics< / a > < / li > < li > < a href = "/exploit/binaries/buffer_overflow/docs/ret_address_reuse.html" > ret_address_reuse< / a > < / li > < / ul > < / details > < li > < a href = "/exploit/binaries/buffer_overflow/ropping.html" > ropping< / a > < / li > < / ul > < / details > < details id = canary_bypass ontoggle = "l
2022-09-02 09:05:59 +02:00
< / ul >
< / div >
< div class = "column column-2" >
< span class = "body" >
< style > p r e { l i n e - h e i g h t : 1 2 5 % ; }
td.linenos .normal { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; }
.codehilite .hll { background-color: #2C3B41 }
.codehilite .c { color: #546E7A; font-style: italic } /* Comment */
.codehilite .err { color: #FF5370 } /* Error */
.codehilite .esc { color: #89DDFF } /* Escape */
.codehilite .g { color: #EEFFFF } /* Generic */
.codehilite .k { color: #BB80B3 } /* Keyword */
.codehilite .l { color: #C3E88D } /* Literal */
.codehilite .n { color: #EEFFFF } /* Name */
.codehilite .o { color: #89DDFF } /* Operator */
.codehilite .p { color: #89DDFF } /* Punctuation */
.codehilite .ch { color: #546E7A; font-style: italic } /* Comment.Hashbang */
.codehilite .cm { color: #546E7A; font-style: italic } /* Comment.Multiline */
.codehilite .cp { color: #546E7A; font-style: italic } /* Comment.Preproc */
.codehilite .cpf { color: #546E7A; font-style: italic } /* Comment.PreprocFile */
.codehilite .c1 { color: #546E7A; font-style: italic } /* Comment.Single */
.codehilite .cs { color: #546E7A; font-style: italic } /* Comment.Special */
.codehilite .gd { color: #FF5370 } /* Generic.Deleted */
.codehilite .ge { color: #89DDFF } /* Generic.Emph */
.codehilite .gr { color: #FF5370 } /* Generic.Error */
.codehilite .gh { color: #C3E88D } /* Generic.Heading */
.codehilite .gi { color: #C3E88D } /* Generic.Inserted */
.codehilite .go { color: #546E7A } /* Generic.Output */
.codehilite .gp { color: #FFCB6B } /* Generic.Prompt */
.codehilite .gs { color: #FF5370 } /* Generic.Strong */
.codehilite .gu { color: #89DDFF } /* Generic.Subheading */
.codehilite .gt { color: #FF5370 } /* Generic.Traceback */
.codehilite .kc { color: #89DDFF } /* Keyword.Constant */
.codehilite .kd { color: #BB80B3 } /* Keyword.Declaration */
.codehilite .kn { color: #89DDFF; font-style: italic } /* Keyword.Namespace */
.codehilite .kp { color: #89DDFF } /* Keyword.Pseudo */
.codehilite .kr { color: #BB80B3 } /* Keyword.Reserved */
.codehilite .kt { color: #BB80B3 } /* Keyword.Type */
.codehilite .ld { color: #C3E88D } /* Literal.Date */
.codehilite .m { color: #F78C6C } /* Literal.Number */
.codehilite .s { color: #C3E88D } /* Literal.String */
.codehilite .na { color: #BB80B3 } /* Name.Attribute */
.codehilite .nb { color: #82AAFF } /* Name.Builtin */
.codehilite .nc { color: #FFCB6B } /* Name.Class */
.codehilite .no { color: #EEFFFF } /* Name.Constant */
.codehilite .nd { color: #82AAFF } /* Name.Decorator */
.codehilite .ni { color: #89DDFF } /* Name.Entity */
.codehilite .ne { color: #FFCB6B } /* Name.Exception */
.codehilite .nf { color: #82AAFF } /* Name.Function */
.codehilite .nl { color: #82AAFF } /* Name.Label */
.codehilite .nn { color: #FFCB6B } /* Name.Namespace */
.codehilite .nx { color: #EEFFFF } /* Name.Other */
.codehilite .py { color: #FFCB6B } /* Name.Property */
.codehilite .nt { color: #FF5370 } /* Name.Tag */
.codehilite .nv { color: #89DDFF } /* Name.Variable */
.codehilite .ow { color: #89DDFF; font-style: italic } /* Operator.Word */
.codehilite .w { color: #EEFFFF } /* Text.Whitespace */
.codehilite .mb { color: #F78C6C } /* Literal.Number.Bin */
.codehilite .mf { color: #F78C6C } /* Literal.Number.Float */
.codehilite .mh { color: #F78C6C } /* Literal.Number.Hex */
.codehilite .mi { color: #F78C6C } /* Literal.Number.Integer */
.codehilite .mo { color: #F78C6C } /* Literal.Number.Oct */
.codehilite .sa { color: #BB80B3 } /* Literal.String.Affix */
.codehilite .sb { color: #C3E88D } /* Literal.String.Backtick */
.codehilite .sc { color: #C3E88D } /* Literal.String.Char */
.codehilite .dl { color: #EEFFFF } /* Literal.String.Delimiter */
.codehilite .sd { color: #546E7A; font-style: italic } /* Literal.String.Doc */
.codehilite .s2 { color: #C3E88D } /* Literal.String.Double */
.codehilite .se { color: #EEFFFF } /* Literal.String.Escape */
.codehilite .sh { color: #C3E88D } /* Literal.String.Heredoc */
.codehilite .si { color: #89DDFF } /* Literal.String.Interpol */
.codehilite .sx { color: #C3E88D } /* Literal.String.Other */
.codehilite .sr { color: #89DDFF } /* Literal.String.Regex */
.codehilite .s1 { color: #C3E88D } /* Literal.String.Single */
.codehilite .ss { color: #89DDFF } /* Literal.String.Symbol */
.codehilite .bp { color: #89DDFF } /* Name.Builtin.Pseudo */
.codehilite .fm { color: #82AAFF } /* Name.Function.Magic */
.codehilite .vc { color: #89DDFF } /* Name.Variable.Class */
.codehilite .vg { color: #89DDFF } /* Name.Variable.Global */
.codehilite .vi { color: #89DDFF } /* Name.Variable.Instance */
.codehilite .vm { color: #82AAFF } /* Name.Variable.Magic */
.codehilite .il { color: #F78C6C } /* Literal.Number.Integer.Long */< / style >
< p > [TOC]
We'll look at this as a step-by-step process. Let's say that we've been given a website to perform a security audit on.< / p >
< ol >
< li > The first thing we would do is take a look at the website as a whole. Using browser extensions such as the aforementioned Wappalyzer (or by hand) we would look for indicators of what languages and frameworks the web application might have been built with. Be aware that Wappalyzer is not always 100% accurate. A good start to enumerating this manually would be by making a request to the website and intercepting the response with Burpsuite. Headers such as server or x-powered-by can be used to gain information about the server. We would also be looking for vectors of attack, like, for example, an upload page.< / li >
< li > Having found an upload page, we would then aim to inspect it further. Looking at the source code for client-side scripts to determine if there are any client-side filters to bypass would be a good thing to start with, as this is completely in our control.< / li >
< li > We would then attempt a completely innocent file upload. From here we would look to see how our file is accessed. In other words, can we access it directly in an uploads folder? Is it embedded in a page somewhere? What's the naming scheme of the website? This is where tools such as Gobuster might come in if the location is not immediately obvious. This step is extremely important as it not only improves our knowledge of the virtual landscape we're attacking, it also gives us a baseline "accepted" file which we can base further testing on.< ul >
< li > An important Gobuster switch here is the -x switch, which can be used to look for files with specific extensions. For example, if you added -x php,txt,html to your Gobuster command, the tool would append .php, .txt, and .html to each word in the selected wordlist, one at a time. This can be very useful if you've managed to upload a payload and the server is changing the name of uploaded files.< / li >
< / ul >
< / li >
< li > Having ascertained how and where our uploaded files can be accessed, we would then attempt a malicious file upload, bypassing any client-side filters we found in step two. We would expect our upload to be stopped by a server side filter, but the error message that it gives us can be extremely useful in determining our next steps.< / li >
< / ol >
< p > Assuming that our malicious file upload has been stopped by the server, here are some ways to ascertain what kind of server-side filter may be in place:< / p >
< div class = "codehilite" > < pre > < span > < / span > < code > < span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > If< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > can< / span > < span class = "w" > < / span > < span class = "n" > successfully< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "w" > < / span > < span class = "n" > with< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > totally< / span > < span class = "w" > < / span > < span class = "n" > invalid< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "w" > < / span > < span class = "n" > extension< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "o" > .< / span > < span class = "n" > g< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > testingimage< / span > < span class = "o" > .< / span > < span class = "n" > invalidfileextension< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > chances< / span > < span class = "w" > < / span > < span class = "n" > are< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > server< / span > < span class = "w" > < / span > < span class = "k" > is< / span > < span class = "w" > < / span > < span class = "n" > using< / span > < span class = "w" > < / span > < span class = "n" > an< / span > < span class = "w" > < / span > < span class = "n" > extension< / span > < span class = "w" > < / span > < span class = "n" > blacklist< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > filter< / span > < span class = "w" > < / span > < span class = "n" > out< / span > < span class = "w" > < / span > < span class = "n" > executable< / span > < span class = "w" > < / span > < span class = "n" > files< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > If< / span > < span class = "w" > < / span > < span class = "n" > this< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > fails< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > any< / span > < span class = "w" > < / span > < span class = "n" > extension< / span > < span class = "w" > < / span > < span class = "n" > filter< / span > < span class = "w" > < / span > < span class = "n" > will< / span > < span class = "w" > < / span > < span class = "n" > be< / span > < span class = "w" > < / span > < span class = "n" > operating< / span > < span class = "w" > < / span > < span class = "n" > on< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > whitelist< / span > < span class = "o" > .< / span > < span class = "w" > < / span >
< span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > Try< / span > < span class = "w" > < / span > < span class = "n" > re< / span > < span class = "o" > -< / span > < span class = "n" > uploading< / span > < span class = "w" > < / span > < span class = "n" > your< / span > < span class = "w" > < / span > < span class = "n" > originally< / span > < span class = "w" > < / span > < span class = "n" > accepted< / span > < span class = "w" > < / span > < span class = "n" > innocent< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > but< / span > < span class = "w" > < / span > < span class = "n" > this< / span > < span class = "w" > < / span > < span class = "n" > time< / span > < span class = "w" > < / span > < span class = "n" > change< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > magic< / span > < span class = "w" > < / span > < span class = "n" > number< / span > < span class = "w" > < / span > < span class = "n" > of< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > be< / span > < span class = "w" > < / span > < span class = "n" > something< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > would< / span > < span class = "w" > < / span > < span class = "n" > expect< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > be< / span > < span class = "w" > < / span > < span class = "n" > filtered< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > If< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > fails< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > know< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > server< / span > < span class = "w" > < / span > < span class = "k" > is< / span > < span class = "w" > < / span > < span class = "n" > using< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > magic< / span > < span class = "w" > < / span > < span class = "n" > number< / span > < span class = "w" > < / span > < span class = "n" > based< / span > < span class = "w" > < / span > < span class = "n" > filter< / span > < span class = "o" > .< / span > < span class = "w" > < / span >
< span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > As< / span > < span class = "w" > < / span > < span class = "n" > with< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > previous< / span > < span class = "w" > < / span > < span class = "n" > point< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > try< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > your< / span > < span class = "w" > < / span > < span class = "n" > innocent< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > but< / span > < span class = "w" > < / span > < span class = "n" > intercept< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > request< / span > < span class = "w" > < / span > < span class = "n" > with< / span > < span class = "w" > < / span > < span class = "n" > Burpsuite< / span > < span class = "w" > < / span > < span class = "ow" > and< / span > < span class = "w" > < / span > < span class = "n" > change< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > MIME< / span > < span class = "w" > < / span > < span class = "n" > type< / span > < span class = "w" > < / span > < span class = "n" > of< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > something< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > would< / span > < span class = "w" > < / span > < span class = "n" > expect< / span > < span class = "w" > < / span > < span class = "n" > to< / span > < span class = "w" > < / span > < span class = "n" > be< / span > < span class = "w" > < / span > < span class = "n" > filtered< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > If< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > fails< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > know< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > server< / span > < span class = "w" > < / span > < span class = "k" > is< / span > < span class = "w" > < / span > < span class = "n" > filtering< / span > < span class = "w" > < / span > < span class = "n" > based< / span > < span class = "w" > < / span > < span class = "n" > on< / span > < span class = "w" > < / span > < span class = "n" > MIME< / span > < span class = "w" > < / span > < span class = "n" > types< / span > < span class = "o" > .< / span > < span class = "w" > < / span >
< span class = "o" > *< / span > < span class = "w" > < / span > < span class = "n" > Enumerating< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "w" > < / span > < span class = "n" > length< / span > < span class = "w" > < / span > < span class = "n" > filters< / span > < span class = "w" > < / span > < span class = "k" > is< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > case< / span > < span class = "w" > < / span > < span class = "n" > of< / span > < span class = "w" > < / span > < span class = "n" > uploading< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > small< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > uploading< / span > < span class = "w" > < / span > < span class = "n" > progressively< / span > < span class = "w" > < / span > < span class = "n" > bigger< / span > < span class = "w" > < / span > < span class = "n" > files< / span > < span class = "w" > < / span > < span class = "n" > until< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > hit< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > filter< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > At< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > point< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "s1" > ' ll know what the acceptable limit is. If you' < / span > < span class = "n" > re< / span > < span class = "w" > < / span > < span class = "n" > very< / span > < span class = "w" > < / span > < span class = "n" > lucky< / span > < span class = "w" > < / span > < span class = "n" > then< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > error< / span > < span class = "w" > < / span > < span class = "n" > message< / span > < span class = "w" > < / span > < span class = "n" > of< / span > < span class = "w" > < / span > < span class = "n" > original< / span > < span class = "w" > < / span > < span class = "n" > upload< / span > < span class = "w" > < / span > < span class = "n" > may< / span > < span class = "w" > < / span > < span class = "n" > outright< / span > < span class = "w" > < / span > < span class = "n" > tell< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > what< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > size< / span > < span class = "w" > < / span > < span class = "n" > limit< / span > < span class = "w" > < / span > < span class = "k" > is< / span > < span class = "o" > .< / span > < span class = "w" > < / span > < span class = "n" > Be< / span > < span class = "w" > < / span > < span class = "n" > aware< / span > < span class = "w" > < / span > < span class = "n" > that< / span > < span class = "w" > < / span > < span class = "n" > a< / span > < span class = "w" > < / span > < span class = "n" > small< / span > < span class = "w" > < / span > < span class = "n" > file< / span > < span class = "w" > < / span > < span class = "n" > length< / span > < span class = "w" > < / span > < span class = "n" > limit< / span > < span class = "w" > < / span > < span class = "n" > may< / span > < span class = "w" > < / span > < span class = "n" > prevent< / span > < span class = "w" > < / span > < span class = "n" > you< / span > < span class = "w" > < / span > < span class = "n" > from< / span > < span class = "w" > < / span > < span class = "n" > uploading< / span > < span class = "w" > < / span > < span class = "n" > the< / span > < span class = "w" > < / span > < span class = "n" > reverse< / span > < span class = "w" > < / span > < span class = "n" > shell< / span > < span class = "w" > < / span > < span class = "n" > we< / span > < span class = "s1" > ' ve been using so far.< / span >
< / code > < / pre > < / div >
< / span >
< / div >
< / div >
< div id = "footer" >
< p > < / p >
< center >
© Stefan Friese
< / center >
< / div >
< script >
2022-09-09 15:41:05 +02:00
function linkClick(obj) {
2022-09-02 09:05:59 +02:00
if (obj.open) {
2022-09-09 15:41:05 +02:00
//console.log('open');
2022-09-02 09:05:59 +02:00
if (sessionStorage.getItem(obj.id) & & !(sessionStorage.getItem(obj.id) === "open")) {
sessionStorage.removeItem(obj.id);
}
2022-09-09 15:41:05 +02:00
sessionStorage.setItem(obj.id,"open");
console.log(obj.id);
2022-09-02 09:05:59 +02:00
} else {
2022-09-09 15:41:05 +02:00
//console.log('closed');
sessionStorage.removeItem(obj.id);
}
}
2022-09-02 09:05:59 +02:00
2022-09-09 15:41:05 +02:00
let _keys = Object.keys(sessionStorage);
if (_keys) {
for ( let i = 0; i < _keys.length ; i + + ) {
document.getElementById(_keys[i])['open'] = 'open';
}
}
2022-09-02 09:05:59 +02:00
< / script >
2022-09-09 15:41:05 +02:00
< script async src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type = "text/javascript" > < / script >
2022-09-02 09:05:59 +02:00
< script type = "text/x-mathjax-config" >
2022-09-09 15:41:05 +02:00
MathJax.Hub.Config({
config: ["MMLorHTML.js"],
jax: ["input/TeX", "output/HTML-CSS", "output/NativeMML"],
extensions: ["MathMenu.js", "MathZoom.js"]
});
< / script >
2022-09-02 09:05:59 +02:00
< / body >
< / html >