Tul xxx Tul
User / IP
:
216.73.216.217
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
oswaldopereira
/
database
/
Viewing: con papas o sin papas.sql
-- Limpieza y blindaje de duplicados exactos de pagos. -- Conserva el id_pago mas antiguo por clave exacta activa y desactiva el resto. CREATE TABLE IF NOT EXISTS auditoria_integridad_pagos ( id_auditoria INT NOT NULL AUTO_INCREMENT, fecha_auditoria DATETIME NOT NULL, id_pago INT NOT NULL, id_pago_conservado INT DEFAULT NULL, estado_anterior VARCHAR(20) DEFAULT NULL, motivo VARCHAR(80) NOT NULL, detalle TEXT DEFAULT NULL, PRIMARY KEY (id_auditoria), KEY idx_id_pago (id_pago), KEY idx_fecha (fecha_auditoria) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; CREATE TABLE IF NOT EXISTS auditoria_integridad_caja ( id_auditoria INT NOT NULL AUTO_INCREMENT, fecha_auditoria DATETIME NOT NULL, id_movimiento INT NOT NULL, pago_id INT DEFAULT NULL, estado_pago VARCHAR(20) DEFAULT NULL, motivo VARCHAR(80) NOT NULL, detalle TEXT DEFAULT NULL, PRIMARY KEY (id_auditoria), KEY idx_movimiento (id_movimiento), KEY idx_pago (pago_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; DROP TEMPORARY TABLE IF EXISTS tmp_pagos_duplicados_exactos; CREATE TEMPORARY TABLE tmp_pagos_duplicados_exactos AS SELECT p.id_pago, x.keep_id AS id_pago_conservado FROM pagos p INNER JOIN ( SELECT MIN(id_pago) AS keep_id, estudiante_id, UPPER(REPLACE(TRIM(referencia_pagado), ' ', '')) AS ref_norm, UPPER(TRIM(mes_pagado)) AS mes_norm, UPPER(TRIM(forma_pagado)) AS forma_norm, fecha_pagado, CAST(monto_pagado AS DECIMAL(10,2)) AS monto_norm FROM pagos WHERE estado IN ('VERIFICAR','VERIFICADO','PAGADO') GROUP BY estudiante_id, ref_norm, mes_norm, forma_norm, fecha_pagado, monto_norm HAVING COUNT(*) > 1 ) x ON x.estudiante_id = p.estudiante_id AND x.ref_norm = UPPER(REPLACE(TRIM(p.referencia_pagado), ' ', '')) AND x.mes_norm = UPPER(TRIM(p.mes_pagado)) AND x.forma_norm = UPPER(TRIM(p.forma_pagado)) AND x.fecha_pagado = p.fecha_pagado AND x.monto_norm = CAST(p.monto_pagado AS DECIMAL(10,2)) WHERE p.estado IN ('VERIFICAR','VERIFICADO','PAGADO') AND p.id_pago <> x.keep_id; INSERT INTO auditoria_integridad_pagos (fecha_auditoria, id_pago, id_pago_conservado, estado_anterior, motivo, detalle) SELECT NOW(), p.id_pago, t.id_pago_conservado, p.estado, 'DUPLICADO_EXACTO', CONCAT('estudiante=', p.estudiante_id, '; ref=', p.referencia_pagado, '; mes=', p.mes_pagado, '; forma=', p.forma_pagado, '; fecha=', p.fecha_pagado, '; monto=', p.monto_pagado) FROM tmp_pagos_duplicados_exactos t INNER JOIN pagos p ON p.id_pago = t.id_pago; UPDATE movimientos_docente md INNER JOIN tmp_pagos_duplicados_exactos t ON t.id_pago = md.pago_id SET md.estado = '0', md.fyh_actualizacion = NOW() WHERE md.estado = '1'; UPDATE caja_movimientos cm INNER JOIN tmp_pagos_duplicados_exactos t ON t.id_pago = cm.pago_id SET cm.estado = '0', cm.fyh_actualizacion = NOW() WHERE cm.estado = '1'; UPDATE pagos p INNER JOIN tmp_pagos_duplicados_exactos t ON t.id_pago = p.id_pago SET p.estado = '0', p.fyh_actualizacion = NOW(); INSERT INTO auditoria_integridad_caja (fecha_auditoria, id_movimiento, pago_id, estado_pago, motivo, detalle) SELECT NOW(), cm.id_movimiento, cm.pago_id, p.estado, 'CAJA_ACTIVA_PAGO_NO_VIGENTE', CONCAT('ref=', COALESCE(cm.referencia,''), '; fecha=', cm.fecha_movimiento, '; monto=', cm.monto_usd) FROM caja_movimientos cm INNER JOIN pagos p ON p.id_pago = cm.pago_id WHERE cm.estado = '1' AND p.estado NOT IN ('VERIFICAR','VERIFICADO','PAGADO'); UPDATE caja_movimientos cm INNER JOIN pagos p ON p.id_pago = cm.pago_id SET cm.estado = '0', cm.fyh_actualizacion = NOW() WHERE cm.estado = '1' AND p.estado NOT IN ('VERIFICAR','VERIFICADO','PAGADO'); ALTER TABLE pagos ADD COLUMN IF NOT EXISTS pago_dup_hash BINARY(16) GENERATED ALWAYS AS ( CASE WHEN estado IN ('VERIFICAR','VERIFICADO','PAGADO') THEN UNHEX(MD5(CONCAT_WS('|', estudiante_id, UPPER(REPLACE(TRIM(referencia_pagado), ' ', '')), UPPER(TRIM(mes_pagado)), UPPER(TRIM(forma_pagado)), fecha_pagado, CAST(CAST(monto_pagado AS DECIMAL(10,2)) AS CHAR)))) ELSE NULL END ) STORED; CREATE UNIQUE INDEX IF NOT EXISTS uniq_pagos_dup_activos ON pagos (pago_dup_hash);
Coded With 💗 by
0x6ick