Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2018-20343 — PoC für CVE-2018-20343 | Kitploit
Tools/GitHubGitHub/alexandre-bartel/cve-2018-20343
SchwachstellenanalyseExploitationFuzzingPapers & ForschungLernen & BildungBinary-Exploitation
GitHubalexandre-bartel/cve-2018-20343

CVE-2018-20343

PoC für CVE-2018-20343

Repository anzeigen
62vor 7 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2018-20343

Dies ist ein PoC für CVE-2018-20343, eine Sicherheitslücke in Ken Silvermans Build Engine. Die generierte .map-Datei löst einen Pufferüberlauf aus und überschreibt den Stack, wie unten gezeigt:


Open Watcom unter DosBox 0.74-2: Der Analyst kontrolliert den Stack
Unter FreeDos 1.2: Der Analyst kontrolliert EIP

Der anfällige Code befindet sich in ENGINE.C:

root@kitploit:~
1935   kread(fil,&numsectors,2);
1936   kread(fil,&sector[0],sizeof(sectortype)*numsectors);

Die Variable sector hat eine deklarierte Größe von MAXSECTORS * sizeof(struct sectortype) = 1024 * 40 = 40960 Bytes. Der Analyst kontrolliert numsectors (da es aus der Map-Datei gelesen wird) und kann somit eine Map-Datei erstellen, die numsectors mit einem Wert größer als 40960 initialisiert, um den Überlauf auszulösen.

Ken Silverman wies darauf hin, dass Code, der auf der kread-Funktion basiert, wie die folgenden Code-Ausschnitte, ebenfalls anfällig sein könnte:

In ENGINE.C:

root@kitploit:~
1938  kread(fil,&numwalls,2);
1939  kread(fil,&wall[0],sizeof(walltype)*numwalls);
1940
1941  kread(fil,&numsprites,2);
1942  kread(fil,&sprite[0],sizeof(spritetype)*numsprites);
root@kitploit:~
2033   kread(fil,palette,768);
2034   kread(fil,&numpalookups,2);
[...]
2046   kread(fil,palookup[globalpal],numpalookups<<8);
2047   kread(fil,transluc,65536);
root@kitploit:~
2453       kread(fil,&artversion,4);
2454       if (artversion != 1) return(-1);
2455       kread(fil,&numtiles,4);
2456       kread(fil,&localtilestart,4);
2457       kread(fil,&localtileend,4);
2458       kread(fil,&tilesizx[localtilestart],(localtileend-localtilestart+1)<<1);
2459       kread(fil,&tilesizy[localtilestart],(localtileend-localtilestart+1)<<1);
2460       kread(fil,&picanm[localtilestart],(localtileend-localtilestart+1)<<2);
root@kitploit:~
2520     kread(fil,&dasiz,4);
2521       //Must store filenames to use cacheing system :(
2522     voxlock[voxindex][i] = 200;
2523     allocache(&voxoff[voxindex][i],dasiz,&voxlock[voxindex][i]);
2524     ptr = (char *)voxoff[voxindex][i];
2525     kread(fil,ptr,dasiz);

In KDMENG.C:

root@kitploit:~
1155     kread(fil,&dawaversionum,4);
1156     if (dawaversionum != 0) { kclose(fil); return; }
1157  
1158     kread(fil,&numwaves,4);
1159     for(i=0;i<numwaves;i++)
1160     {
1161       kread(fil,&instname[i][0],16);
1162       kread(fil,&wavleng[i],4);
1163       kread(fil,&repstart[i],4);
1164       kread(fil,&repleng[i],4);
1165       kread(fil,&finetune[i],4);
root@kitploit:~
1194     kread(fil,snd,totsndbytes);
root@kitploit:~
1214   kread(fil,&kdmversionum,4);
1215   if (kdmversionum != 0) return(-2);
1216   kread(fil,&numnotes,4);
1217   kread(fil,&numtracks,4);
1218   kread(fil,trinst,numtracks);
1219   kread(fil,trquant,numtracks);
1220   kread(fil,trvol1,numtracks);
1221   kread(fil,trvol2,numtracks);
1222   kread(fil,nttime,numnotes<<2);
1223   kread(fil,nttrack,numnotes);
1224   kread(fil,ntfreq,numnotes);
1225   kread(fil,ntvol1,numnotes);
1226   kread(fil,ntvol2,numnotes);
1227   kread(fil,ntfrqeff,numnotes);
1228   kread(fil,ntvoleff,numnotes);
1229   kread(fil,ntpaneff,numnotes);

Der PoC für diese Sicherheitslücke wurde mit den folgenden Umgebungen getestet:

  • Ken Silvermans Build Engine KENBUILD.ZIP (sha256sum 704a5eee1b722ed5f452d3fb1aff197f0d201ff9737839846268c6b1e07f8e1f)
  • Ziel-Binärdatei GAME.EXE (sha256sum 120acdf872af56ac65982a0c21e3aa2fdd06b70bd6203869ba777ce3e6daa5e4) kompiliert mit dem Open Watcom Compiler 1.9
  • DOSBox 0.74-2 || FreeDOS 1.2 unter QEMU.

Die Build Engine wurde in vielen Spielen verwendet. Nachfolgend finden Sie eine Liste von Spielen, die auf der Build Engine basieren und gegen den PoC getestet wurden (der die sector-Variable überläuft):

Tool herunterladen
SpielVeröffentlichungsdatumVersionStatus
Duke Nukem 3D19961.5vulnerable
Shadow Warrior19971.2vulnerable
Redneck Rampage19971.01vulnerable
Blood19971.0nicht anfällig