披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞(16)
2023-06-03 来源:旧番剧
接下来必须小心操作DLL文件,以便惠普签名验证算法将文件末尾定义的新字节加载到numArray2中。仔细分析上面的ValidatePeSignature代码,并结合十六进制编辑器中相应的字节值,显示以下内容:
int32_2 is loaded from the DLL at offset = int32_1 152 = 128 152 = 280 = 118 hex
int32_3 is loaded from the DLL at offset = int32_1 156 = 128 156 = 284 = 11C hex
在这些偏移量处检查我们新加的未签名DLL文件,我们看到它们当前设置为0:
显而易见的问题是,我们应该如何设置int32_2和int32_3的值,以将Foo.txt中粘贴在DLL文件末尾的字节读入numArray2中?
再次检查ValidatePeSignature的代码,第20-22行有所相关:
if (file.Position != (long) (int32_2 8))file.Seek((long) (int32_2 8), SeekOrigin.Begin);file.Read(numArray2, 0, int32_3 - 8);
因此,读入numArray2的字节将是DLL文件中位于int32_2 8和int32_3-8之间的DLL文件中的字节。