One bug, on one billion devices

https://stackoverflow.com/q/75911453/3451846

Apart from this weird problem, I think a problem in StackOverflow as far as I am concerned maybe is with big communities, like the tag StackOverflow community.

That community is super-flooded with absurd questions from absurd people and comes the easy downvotes, even when a question simply from cursed results appears that however is well posed, is in-topic, has references to official documentation, has screenshots, steps to reproduce, obvious troubleshooting effort, and is not posed by a person who has critical English issues.

But yes, that question started with two downvotes, and no: no constructive comments like “clarify this / that” etc. Just downvotes.

Now, the question has 1 downvote, and only 1 comment (actually it’s an improper comment that provides an answer, but I don’t want to scold that user since that user is the only person on my side – it seems; anyway: do not put answers in the comments please – put an answer in the answer).

Dita spaziali o abile trucco?

Premessa

Questo articolo è molto vecchio e l’autore di questa pagina nel frattempo è maturato un filino culturalmente e quindi si vergogna molto di quanto vi sia scritto. Nello specifico solo un bimbominkia pubblicherebbe un articolo in cui ci si intrattiene con self-XSS.

Questi contenuti comunque rimarranno online per aiutare a ricordarsi di quanto si era ignoranti in Informatica solo pochi anni fa e di quanto sia stata sottile la linea che mi separava da Aranzulla.

P.S.
Se trovi un’altra guida del genere in Internet senza un simile disclaimer, insulta immediatamente quell’autore.

Esiste uno Speedtest online per contare il numero di parole che riesci a scrivere sulla tastiera in un minuto e si chiama: 10 fast fingers.com.

Nella media una persona si aspetterebbe 70-90 caratteri al minuto e qualche errorino qua e là…ma anche con tutta la buona volontà del mondo, questo risultato citato in basso come diavolo può essere umano?

Immagine del Test eseguito dallo staff

E siccome non è un lavoretto di photoshop la domanda è come ci siamo riusciti? Il risultato è un semplice stratagemma: sbirciare nei codici della pagina, scovare qualche variabile javascript, tentare di ipotizzare il suo uso nell’applicazione, modificarla (prevedendo il risultato), e iniettare il tutto nella pagina tramite la barra degli indirizzi. Cioè…

  • Visualizzare la pagina
  • Cliccare Tasto destro -> Html (o visualizza sorgente)
  • Cercare qualcosa che salti all’occhio…(var sekunden)
  • Ipotizzare il suo uso (saranno mica i secondi?)
  • Modificare la variabile con un codice da lanciare nella console di debug:

Il codice agisce sulla variabile sekunden che rappresenta il conto alla rovescia dell’applicazione, facendolo tornare da capo. Avrete così un metodo per avere un tempo illimitato per scrivere tutte le parole che vogliamo e superare tutti gli altri con tranquillita estrema…

Provate inoltre questo script più elaborato copiandolo ed incollandolo nella console di debug:

x='Tempo aumentato'; h='<button%20onclick="javascript:sekunden=-40;alert(x);">'; j='<h1><em>Incrementa%20il%20Contatore!</h1></em></button>'; o=h+j; document.getElementById('info').innerHTML=o; alert('Modifica della pagina HTML. Usa il nuovo pulsante nella pagina.');

Buona continuazione.

Comandare sul web: injection javascript

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Se per caso possiedi la tecnologia necessaria per effettuare viaggi nel tempo, vieni qui e proibiscimi di scrivere questo post, perché è da rincoglioniti, peggio di Aranzulla. Nello specifico, copy-pastare roba nella tua console di debug del tuo browser web è da rincoglioniti. Ogni volta che rileggo questo post avrei voluto che il giorno prima io fossi stato investito da un camion, ed è questo il motivo per cui lo manterrò online: per maturare. Con le dovute precauzioni, buona lettura.)

Come si può “comandare” sul web? Come possono persone normali avere accesso a parti segrete di siti poco controllati, o di incrementare punteggi di browser-game in poche mosse?
Lo capiremo partendo da molto lontando attraverso questa breve guida dedicata alle injection-javascript.

Una estrazione (extraction) javascript è un metodo di controllo del codice di un sito tramite l’estrazione diretta delle variabili, via indirizzo ipertestuale.
Significa che per controllare una variabile di un sito web (un punteggio di un gioco online o la password di un utente loggato ad esempio) basta conoscere il nome della variabile che lo custodisce, e richiamare il suo valore inserendo nella barra degli indirizzi un comando di richiamo come javascrpt:alert(nomevariabile);
Questo tipo di estrazione si è però evoluto in forme molto complesse di iniezione chiamate injection javascript, delle quali approfondiremo ora.
Le chiamano injection javascript perchè con esse si può riuscire a modificare parte di una pagina web durante la propria sessione di navigazione, e quindi riuscire ad apportare modifiche consistenti ad un qualunque sito o gioco online, esclusivamente utilizzando codici, iniettati nella pagina, tramite la barra degli indirizzi, o tramite un segnalibro web.
Quello che faremo ora sarà prendere di mira alcuni siti molto famosi e sostituire un oggetto della pagina con del testo a nostra scelta.
Premettiamo che questo tipo di modifica non è reato: una injection javascript non è infatti una distruzione della pagina ma solo una modifica parziale lato-utente del listato javascript, del tutto ripristinabile ricaricando la pagina.
Ma insomma! Partiamo!

Step one

Prima di tutto, assicuriamoci di usare Firefox e non Internet Explorer (poichè I.E. si blocca con le injection javascript)
Ottenuto Firefox creiamo un segnalibro che ci servirà da “iniettore”

  • Digitiamo CTRL+D
  • Selezioniamo “Barra dei segnalibri” come cartella
  • Salviamo il segnalibro

Step two

A questo punto comparirà il segnalibro della presente pagina nella vostra barra dei segnalibri. Quindi:

  • Selezioniamo tutto il seguente codice e copiamolo (compresa la scritta “javascript:”):

javascript:
x="Questo e' un esempio di Injection Javascript - Reyboz Blog";
alert('Codice da iniettare:nn'+x);
x="<h1>"+x+"</h1>";
document.getElementById('previewPan_w1').innerHTML=x;
alert('Injection eseguita.');

  • Selezioniamo il segnalibro precedente con un click destro
  • Selezioniamo Proprietà
  • Incolliamo il precedente codice nello spazio dedicato all’indirizzo del segnalibro.

Ora avremo nella barra degli indirizzi il segnalibro che conterrà come indirizzo lo script: servirà ora per iniettare una scritta nel famoso motore di ricerca Blackr.

Dritti al cuore di blackr

Bando alle ciance:

  • Dirigiamoci sul Blackr
  • Lanciamo il segnalibro con un click su di esso
  • Clicchiamo su Ok ai 2 messaggi
  • Osserviamo

Se avete eseguito tutti i procedimenti Blackr apparirà con una scritta nella parte destra.

Ma noi non ci siamo fermati:

Dritti al cuore di facebook

  • Accedete al vostro Facebook
  • Rieseguiamo lo Step One
  • Incolliamo nel segnalibro tutto il seguente codice al posto dell’indirizzo:

javascript:
x=prompt('Inserisci il tuo nome di Facebook: (serve)','qui');
x="<h1>Mi chiamo -"+x+"- Salve! </h1>";
document.getElementById('navSearch').innerHTML=x;
alert('Injection eseguita.');

  • Salviamo il segnalibro
  • Clicchiamo sul segnalibro
  • Osserviamo

Se tutto è andato bene comparirà nella parte del titolo del vostro profilo di facebook una piccola modifica testuale.
Tranquilli, tutto torna normale digitando il classico F5.

Dritti al cuore dei giochi online

Scaricheremo un piccolo gioco online della Mr. Webmaster intitolato Chi vuol essere milionario. Dunque scarichiamolo, estraiamolo sul nostro computer e iniziamo subito a giocare.
Noterete che il gioco funziona perfettamente ma perchè non barare un po’?

  • Aprite il gioco
  • Ripetete lo Step One
  • Incolliamo nel segnalibro tutto il seguente codice al posto dell’indirizzo:

javascript:
function prossimadomanda(){
document.gioco.giustaa.value="giusta";}
alert('Preparazione alla injection in corso.');
prossimadomanda();
alert("Script abortito, la risposta sarà sempre la numero:nn-A.")
;

  • Salviamo il segnalibro
  • Clicchiamo sul segnalibro
  • Osserviamo

Come potete immaginare è stato iniettato un codice che modifica questo semplice gioco rendendo le risposte tutte uguali.
La nostra piccola lezione sulle injection javascript è ormai giunta al termine, vi auguriamo che tutto sia stato comprensibile e che vi siate divertiti scoprendo i segreti celati dietro alla modifica dei siti web. Vorremo precisare che tutto questo non deve apparire come un articolo “terrificante”,  questi utilizzi javascript non sono paragonabili a pirateria informatica e nè lo saranno mai, poichè il web deve essere uno strumento comune di insegnamento e non un segreto privato.
Grazie per la lettura.

Semplice pesce d’Aprile con Google

Premessa

Questo articolo è molto vecchio e l’autore di questa pagina nel frattempo è maturato un filino culturalmente e quindi si vergogna molto di quanto vi sia scritto. Nello specifico, è da deficienti fare una paginetta HTML che spari un alert JavaScript. Già, JavaScript, che si scrive così, e non Javascript. E fra l’altro la pagina era pure su Altervista. Una cosa più bimbominkia di così non si poteva scrivere. Fra l’altro fare una pagina finta di Google può sembrare divertente ma state facendo phishing, che non è la pesca del pesce d’Aprile ma è una truffa e un illecito civile. State inoltre come minimo violando i trademark di Google.

P.S.
Se trovi un’altro articolo del genere in Internet senza un simile disclaimer, insulta immediatamente quell’autore.

Soltanto un piccolissimo scherzo creato per un pesce d’aprile, realizzato scopiazzando Google e apportando un semplicissimo script in Javascript ad una pagina.

Immagine di errore di Google (totalmente inventato) creato utilizzando Javascript - Reyboz Blog

Link diretto: Google scherzo 1.0

Principalmente lo script si basa sull’effettuare una finestra Alert ogni volta che avviene l’evento ‘Clic’, niente di complicato:

ONCLICK="javascript:alert('Errore');"

E’ possibile trascinare il link dello scherzo sul simbolo homepage (Icona tasto homepage - Reyboz Blog) del vostro browser: in modo che il prossimo che accederà ad internet si cuccherà questo semplice scherzo.

While – Utilizzi del ciclo iterativo

Premessa

Questo articolo è molto vecchio e l’autore di questa pagina nel frattempo non è più un bimbominkia e quindi si vergogna molto di quanto qui è stato scritto. Questi contenuti comunque rimarranno online per aiutare a ricordarsi di quanto si era ignoranti in Informatica solo pochi anni fa.

Ciclo infinito alert javascript - Reyboz blog

Il ciclo while si utilizza per ripetere un operazione solo finchè una funzione logica è vera. Cioè:

  • Controlla una formula logica
    • Se risulta vera esegue un comando fintanto che la funzione logica è vera
    • Se risulta falsa esce dal ciclo

Con un esempio:

  • Controlla se x è minore di 10
    • Se risulta vera esegue x=x+1 fintanto che x è minore di 10
    • Se risulta falsa esce dal ciclo

Ora che abbiamo meglio in testa cosa fa il ciclo while, proviamo a tradurre questo esempio in linguaggio javascript. Creiamo quindi una variabile x=0 e proviamo a seguire i passaggi logici sotto celati.

x=0;
while (x<10)
{
x=x+1;
}
document.write(x);

Se il valore di x in questo caso è zero (o), al termine di questo ciclo quanto varrà?

Se abbiamo capito bene il while possiamo calcolarlo semplicemente vedendo i suoi passaggi:

All'inizio x=0
Inizio ciclo
x= 0 ( 0 minore o uguale a 10? Vero. x= 0+1)
x= 1 ( 1 minore o uguale a 10? Vero. x= 1+1)
...
x=10 (10 minore o uguale a 10? Vero. x=10+1)
x=11 (11 minore o uguale a 10? Falso. Interrompi while)
Fine ciclo
→ x=11

Esattamente il risultato che ci fornirà la pagina: 11.

Utilizzi del ciclo while

Ora che abbiamo capito come funziona, proviamo ad utilizzarlo per creare un’applicazione che crea una serie di finestre window.alert in successione, a seconda di quante finestre decidiamo di visualizzare in precedenza.

Questo è il codice javascript:

contoallarovescia=10;
while(contoallarovescia==0)
{
window.alert("Mancano ancora "+contoallarovescia+" finestre!);
contoallarovescia=contoallarovescia-1;
}

Se volete potete provare il ciclo con questo link di prova. Buona navigazione.

Javascript di base

Javascript - Reyboz Blog

Ecco un semplice riassunto di concetti basilari per un primo approccio al linguaggio Javascript, il linguaggio lato utente, che si utilizza per svolgere script all’interno di una pagina web.

Inserimento

Per aggiungere uno script interno ad una pagina web basta inserire i comandi javascript tra <script> e </script> all’interno della pagina. Ecco un esempio:

<html>
<head>
<title>Home</title>
<script type='text/javascript'>
document.write('Questo è un comando Javascript');
document.title='Questo è un' altro comando Javascript';
</script>

</head>
<body>
</body>
</html>

Oppure se si vuole caricare uno script esterno alla pagina basta inserire il suo indirizzo utilizzando il metodo src=” + indirizzo del file.js”.

Il file esterno deve essere in formato .js e all’interno di esso non bisogna inserire di nuovo <script> e </script>. Ecco in questo caso come caricare lo script nella pagina:

<html>
<head>
<title>Home</title>
<script type="text/javascript" src="http://reybozblog.it/file.js"></script>
</head>
<body>
</body>
</html>

E nel corrispondente http://reybozblog.it/file.js:

document.write('Questo è un comando Javascript');
document.title='Questo è un'altro comando Javascript';

Calcoli

Dichiarare variabile x=1;
Incrementare di uno x++;
Decrementare di uno x--;
Addizionare x=3+1;
Sottrarre x=4-2;
Moltiplicare x=6*4;
Dividere x=3/4;
Resto di una divisione x=4%2;

Condizione – if

Il’if else è un comando che calcola una condizion biunivoca: ad esempio se una variabile è vera, esegue un comando, ma se è falsa ne esegue un’altro: (esempio)

x=confirm('Aprire il Reyboz search?');
if(x == true) {
window.location='/search';
}
else
{
alert('Rimani su questa pagina.');
}

L’if valuta una condizione: se la condizione è vera fa una cosa, se è falsa ne fa un’altra.

Ripetizione – while

Il ciclo while ripete un operazione finchè una condizione è vera. (esempio)

x = false;
while (x==false) {
x=confirm('Uscire?');
}
alert('Sei uscito');

Condizioni – switch

Conosciuto anche come case of permette di eseguire dei comandi dopo una multipla scelta di condizioni. (esempio)

x=prompt('Inserisci un numero da 1 a 3','');
switch (x) {
case '1': alert('Hai inserito 1'); break;
case '2': alert('Hai inserito 2'); break;
case '3': alert('Hai inserito 3'); break;
default: alert('Non hai messo nè 1 nè 2 nè 3');
}

Ripetizione – for

Per ripetere x volte uno script contenuto in parentesi graffe. (esempio)

document.write(' - Tabellina del due: <br>');
y = 0;
for (x = 1; x<=10; x++){
y=y+2;
document.write(y + '<br>');
}

Break & continue

Il ‘break’ interrompe un ciclo, mentre il ‘continue’ salta una e una sola iterazione di un ciclo for per passare alla successiva. Qui ad esempio abbiamo utilizzato il continue per accorciare l’esempio precedente. (esempio)

document.write(' - Tabellina del due: <br>');
for (x=1; x<=20; x++) {
if(x % 2 != 0){continue}
document.write(x + '<br>'); }