简单分析SQL注入语义分析库Libinjection
一、前言 这次主要讲开源SQL注入语义分析库libinjection,如果有发现其他开源SQL语义分析库的欢迎告知。libinjection的程序分析由Simon友情提供,需要看完整报告的可以加群看。 二、libinjection程序分析 从流程图上看,libinjection首先是初始化issqlii变量,接着设置数据结构并初始化变量state,libinjection_sqli_init()函数将初始化SQL检测所需的结构体,之后通过libinjection_is_sqli()函数进行具体分析,如果存在issqli,则将SQL注入识别特征复制进fingerprint变量并返回,如果不存在则将fingerprint变量设置为空并返回。 上图是总的函数关系图,libinjection_sqli_init()函数的主要工作是将 SQL注入识别特征码(指纹) 加载进结构体,并完成各种内置变量的初始化。libinjection_is_sqli()的处理代码如下,根据代码来分析 int libinjection_is_sqli(struct libinjection_sqli_state * sql_state) { const char *s = sql_state->s; size_t slen = sql_state->slen; if (slen == 0) { return