Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2018-20343 — PoC لـ CVE-2018-20343 | Kitploit
أدوات/GitHubGitHub/alexandre-bartel/cve-2018-20343
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubalexandre-bartel/cve-2018-20343

CVE-2018-20343

PoC لـ CVE-2018-20343

عرض المستودع
62منذ 7 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2018-20343

هذا هو PoC لـ CVE-2018-20343، وهي ثغرة في محرك Build الخاص بـ Ken Silverman. ملف .map المُنشأ يُسبب تجاوز سعة المخزن المؤقت ويكتب فوق المكدس كما هو موضح أدناه:


Open Watcom تحت DosBox 0.74-2: المحلل يتحكم في المكدس
تحت FreeDos 1.2: المحلل يتحكم في EIP

الكود الضعيف موجود في ENGINE.C:

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

المتغير sector له حجم مُصرح به قدره MAXSECTORS * sizeof(struct sectortype) = 1024 * 40 = 40960 بايت. يتحكم المحلل في numsectors (لأنه يُقرأ من ملف الخريطة) وبالتالي يمكنه إنشاء ملف خريطة لتهيئة numsectors بقيمة أكبر من 40960 لإحداث التجاوز.

أشار Ken Silverman إلى أن الكود الذي يعتمد على دالة kread، مثل مقتطفات الكود التالية، قد يكون أيضًا عرضة للخطر:

في 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);

في 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);

تم اختبار PoC لهذه الثغرة باستخدام البيئات التالية:

  • Build engine الخاص بـ Ken Silverman KENBUILD.ZIP (sha256sum 704a5eee1b722ed5f452d3fb1aff197f0d201ff9737839846268c6b1e07f8e1f)
  • الثنائي الهدف GAME.EXE (sha256sum 120acdf872af56ac65982a0c21e3aa2fdd06b70bd6203869ba777ce3e6daa5e4) تم تجميعه باستخدام Open Watcom compiler 1.9
  • DOSBox 0.74-2 || FreeDOS 1.2 تحت QEMU.

تم استخدام محرك Build في العديد من الألعاب. فيما يلي قائمة بالألعاب المبنية على محرك Build والتي تم اختبارها ضد PoC (الذي يتسبب في تجاوز المتغير sector):

تنزيل الأداة
اللعبةتاريخ الإصدارالإصدارالحالة
Duke Nukem 3D19961.5vulnerable
Shadow Warrior19971.2vulnerable
Redneck Rampage19971.01vulnerable
Blood19971.0غير معرضة للخطر