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

一个网络安全学习爱好者在学习过程中记录下的笔记,希望在CSDN能和大家一起成长,学习,分享,进步,下面分享的是代码审计实战案例之SQL注入漏洞,希望对入门网安的朋友们有所帮助,大神有兴趣看看即可,勿喷感谢,同时也欢迎各位师傅私聊交流学习。文章有所参考,也感谢教授我网安知识的师父们,感谢出生在这个互联网时代,知识触手可及。
PHP代码审计目录
网络安全自学篇-PHP代码审计(一)
网络安全自学篇-PHP代码审计(二)
网络安全自学篇-PHP代码审计(三)
网络安全自学篇-PHP代码审计(四)
网络安全自学篇-PHP代码审计(五)
网络安全自学篇-PHP代码审计(六)
网络安全自学篇-PHP代码审计(七)
网络安全自学篇-PHP代码审计(八)
网络安全自学篇-PHP代码审计(九)
网络安全自学篇-PHP代码审计(十)
网络安全自学篇-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页面中即可:

$safe=array($user,$psw);
functionSqlInjectionDenied($value) {
	if(!get_magic_quotes_gpc()) {
		returnstrip_tags(addcslashes($value,"'"));
	} else {
		returnstrip_tags($value);
	}
}
$safe_param=array_map('SqlInjectionDenied',$safe);

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

在这里插入图片描述
在这里插入图片描述
接着我们再次使用jadore’and1=1#进行登录,发现无法登录成功。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44047795/article/details/106685697