lehrkraefte:blc:informatik:ffprg2-2018:ffprg2-2018

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg2-2018:ffprg2-2018 [2019/01/11 16:17]
Ivo Blöchliger [Freifach Programmieren]
lehrkraefte:blc:informatik:ffprg2-2018:ffprg2-2018 [2019/01/25 15:34] (current)
Ivo Blöchliger [Assembler und Hacking (Stackoverflow)]
Line 11: Line 11:
   * Dokumentation: http://www.cplusplus.com/reference/   * Dokumentation: http://www.cplusplus.com/reference/
  
-====== Assembler und Hacking (Stackoverflow) ======+====== Hacking ====== 
 +===== XSS: Cross Site Scripting ===== 
 +https://glf.tech-lab.ch/techlab/hackme/index.php 
 + 
 +===== Assembler und Hacking (Stackoverflow) ===== 
 +Ein aktueller Hack vom letzten Chaos Computer Congress: https://www.jaybosamiya.com/blog/2019/01/02/krautflare/ 
 + 
   * https://fginfo.ksbg.ch/~ivo/assembler-simulator/   * https://fginfo.ksbg.ch/~ivo/assembler-simulator/
 +
 +===== 7-Segment-Anzeige-Demo =====
 +Die 3 Segmente sind an den Adressen 253, 254 und 255, die Bits beginnen oben, dann im Urzeigersinn, am Schluss die Mitte.
 +<code asm>
 +start:
 +MOV [253], 1b
 +MOV [253], 10b
 +MOV [253], 100b
 +MOV [253], 1000b
 +MOV [253], 10000b
 +MOV [253], 100000b
 +MOV [253], 1000000b
 +
 +JMP start
 +</code>
 +
 +Mit etwas mehr Assembler Voodoo:
 +<code asm>
 +start:
 + MOV A,1
 +loopA:
 + MOV B, 253
 +loopB:
 + MOV [B], A
 + INC B
 + JNC loopB
 +
 + SHL A,1
 + JNC loopA
 +
 + JMP start
 +</code>
 +
 +Der L0L-Dreizeiler
 +<code asm>
 +MOV [253], 0111000b
 +MOV [254], 0111111b
 +MOV [255], 0111000b
 +</code>
 +
 +
 +Manipulierte Rücksprungadresse
 +
 +<code asm>
 + mov A, 'A'   ; Schreibt 65 (ASCII A) ins Register A
 +start:
 + inc A          ; Erhöht den Inhalt vom Register A um 1
 + mov [232], A   ;Schreibt den Wert 65 'A' in die Zelle 232
 + call bla         ;Unterprogramm aufrufen (Adr. auf Stack)
 +ruecksprung:
 + hlt ;Halt
 +
 +
 +bla:
 + mov [253], A   ;Alle 7 Bits für 7-Segment-Anzeige
 + mov [SP+1], start    ; Rücksprungadresse überschreiben
 + ret                   ;Rücksprung auf nach call
 +</code>
 +
 +
 +Ausgabe des LOL-Codes:
 +<code asm>
 +
 +lol:
 +MOV [253], 0111000b
 +MOV [254], 0111111b
 +MOV [255], 0111000b
 +
 +fertig:
 + mov A, fertig
 + dec A
 + mov B, 252
 +loop:
 + mov C, [A]
 + mov [B], C
 + dec B
 + dec A
 + JNC loop
 + hlt
 +
 +</code>
 +===== Hackme Code =====
 +Studieren Sie folgenden Code:
 +<code asm>
 +; Dieses Programm gibt den String rechtsbündig ab 
 +; Adresse 250 aus.
 +;
 + JMP start
 + DB "hello world"
 +;
 +; Register
 +; A Ausgabe-Adresse
 +; B Position in DB
 +; C temporär
 +
 +start: MOV A,250 ; Adresse Ausgabe (letzter Buchstabe)
 + MOV B, start    ; Adresse+1 vom letzten Buchstaben
 + DEC B ; B vermindern
 + CALL ausgabe
 + HLT
 +ausgabe:
 + MOV C,[B] ; Buchstabe in C
 + MOV [A],C ; Ausgabe
 + DEC A ; A vermindern
 + DEC B ; B vermindern
 + CMP B,1 ; ist B am Anfang angekommen?
 + JNE ausgabe ; sonst wiederholen
 + RET
 +</code>
 +
 +Schaffen Sie es, indem Sie nur die DB-Zeile anpassen (das wäre so quasi der User-Input), dass <nowiki>LOL</nowiki> auf der 7-Segment Anzeige erscheint? 
 +
 +<hidden Lösungsvorschlag>
 +Mit Rücksprung direkt in die DB-Konstante (Adresse 0x02)
 +<code asm>
 +DB "ý8þ?ÿ8+       Hello World!"
 +</code>
 +Oder mit Rücksprung in die kopierten Daten an der Adresse 0xdc:
 +<code asm>
 +DB "ý8þ?ÿ8+Ü       Hello World!"
 +</code>
 +
 +</hidden>
 +
 +
 +===== Busy Beaver =====
 +<code asm>
 +start:
 + MOV B, 255
 +
 +humpfdidumpf:
 + MOV A, [B]
 + INC A
 + MOV [B], A
 + JNC humpfdidumpf
 +while:
 + DEC B
 + CMP B, ende
 + JE ende
 + MOV A, [B]
 + INC A
 + MOV [B], A
 + JC while
 + JMP start
 +ende:
 + HLT
 +</code>
  
 ===== Roborobo-Fernbedienung / Ivobot ===== ===== Roborobo-Fernbedienung / Ivobot =====
  • lehrkraefte/blc/informatik/ffprg2-2018/ffprg2-2018.1547219862.txt.gz
  • Last modified: 2019/01/11 16:17
  • by Ivo Blöchliger