在漏洞研究中使用 Angr

逆向工程 缓冲区溢出 漏洞分析 愤怒
2021-07-06 14:35:39

我想使用 angr 进行漏洞研究。我在想,如果我做了以下事情:

p = angr.Project('a.out', auto_load_libs=False)
sm = p.factory.simulation_manager()
while len(sm.unconstrained) == 0:
  sm.step

那么不受约束的状态可能会指向一个漏洞。我编写了一个明显的潜在缓冲区溢出如下:

void processPacket( char * pkt )
{
    char buffer[255];
    memcpy(buffer, &pkt[3], *((uint16_t*)&pkt[0]));
}

其中数据包的前两个字节决定了数据包其余部分的长度,因此也决定了 memcpy 的长度。

angr 确实找到了一个不受约束的状态,但是如何检查不受约束的状态以确定漏洞的原因并不容易。

一旦我找到一个不受约束的状态,有没有办法确定原因?漏洞研究人员是否使用 angr 寻找潜在漏洞?有没有典型的方法来做到这一点?

0个回答
没有发现任何回复~