首页
学习
活动
专区
圈层
工具
发布

网络安全自学篇-PHP代码审计(十一)

代码审计实战之SQL注入漏洞

作者复现的是Axublog1.1.0版本下对用户输入过滤不严导致login.php页面存在SQL注入漏洞,攻击者可以利用漏洞进行SQL注入直接登录网站后台。 使用’进行闭合and1=1#,密码随便填写即可

登录成功

来看到login.php的代码,user和psw直接接收用户输入的参数,并没有过滤机制

追踪登录验证函数jsloginpost,位于文件c_login.php中

可以看到user和psw未经过滤便作为SQL语句中的一部分去执行

临时修补方案(过滤、或者使用预编译等等,这里我写个过滤的方案): 首先介绍这几个函数: array_map:array_map()函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。这里我们用array_map去调用SqlInjectionDenied函数将传入的值进行处理。 get_magic_quotes_gpc:出现在函数SqlInjectionDenied中,目的是得到环境变量magic_quotes_gpc的值,即检查是否开启魔术引号。 strip_tags:剥去字符串中的HTML、XML以及PHP的标签。 addcslashes:返回在预定义的字符前添加反斜杠的字符串,即转义。 代码如下,将其添加到c_login.php页面中即可:

来看到这里,user输出不是admin而是被转义后的admi\’\’\’n

接着我们再次使用jadore’and1=1#进行登录,发现无法登录成功。

下一篇
举报
领券