关于 ISCC 2019 北理工总决赛,这一次比赛体验感总体差不多,最后我们战队荣获全国一等奖第一名,在这里非常感谢我的团队以及我的队友。
0x01 Reverse
下载题目:elf
先用 DIE_090_win 查看信息,64位elf文件,然后拖入 ida 分析。
看到fgets函数,并且没有对输入进行限制,存在数组越界漏洞。
而且数组是连续的
所以根据流程写出相应的脚本
#include <stdio.h> int main(int argc, char *argv[]) { int s,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27; s = (0x17F5B30C ^ 0x17F5B345); v5= (0xF16B77B1^0xF16B77E2); v6=(0xB2B21904 ^ 0xB2B21947); v7 = (0x58A9F9C8 ^ 0x58A9F98B); v8 = (0x20A99D71 ^ 0x20A99D0A); v9=(0x96D85B41 ^ 0x96D85B20); v10=(0xBBEA9A56 ^ 0xBBEA9A3E); v11 = ( 0x35512DDF^ 0x35512DBE); v12 = ( 0x2838DCA8^ 0x2838DCF7); v13 = (0x4EA1DFF4 ^ 0x4EA1DF87); v14=(0xE22DCC84 ^ 0xE22DCCED) ; v15=(0xDD2C6643 ^ 0xDD2C662E); v16 =(0x106B37B4 ^ 0x106B37C4); v17 =(0x46B44202 ^ 0x46B4426E); v18=(0xAA67C791 ^ 0xAA67C7F4); v19=(0x72C06EE2 ^ 0x72C06EBD); v20=(0xB0117F0D ^ 0xB0117F7F) ; v21=(0xF91B9389 ^ 0xF91B93EC); v22=(0xD43CE962 ^ 0xD43CE914); v23=(0xF6EA0C88 ^ 0xF6EA0CED); v24= (0x402A09E5 ^ 0x402A0997); v25=(0xADACB774 ^ 0xADACB707) ; v26=(0xE79C5545 ^ 0xE79C5520); v27 = (0x4B76BD31 ^ 0x4B76BD4C); printf("%c",s); printf("%c",v5); printf("%c",v6); printf("%c",v7); printf("%c",v8); printf("%c",v9); printf("%c",v10); printf("%c",v11); printf("%c",v12); printf("%c",v13); printf("%c",v14); printf("%c",v15); printf("%c",v16); printf("%c",v17); printf("%c",v18); printf("%c",v19); printf("%c",v20); printf("%c",v21); printf("%c",v22); printf("%c",v23); printf("%c",v24); printf("%c",v25); printf("%c",v26); printf("%c",v27); return 0; }