PDA

View Full Version : [fixed] Memberlist Bug



Logician
Wed 4th Sep '02, 9:42pm
Here is another bug I catched:

In memberlist.php $perpage variable does not have an upperlimit check against malicious value assigning by the user. That is, any user can set this variable to a very high value and get the Server on its knees by creating a very server intensive process.

Here is the fix for this bug:
Edit memberlist.php find

if (intval($perpage)==0) {

Replace it as:

if (intval($perpage)==0 OR intval($perpage)>100) {

IMO this is an important bug which can be easily exploited and the fix is crucial..

Regards,
Logician

Steve Machol
Wed 4th Sep '02, 11:36pm
Moving to bugs to be checked by a Developer.

Scott MacVicar
Wed 4th Sep '02, 11:40pm
Just steal the code from forumdisplay.php


// set defaults
$perpage = intval($perpage);
if (empty($perpage) or $perpage>200) {
$perpage=30;
}

DWZ
Thu 5th Sep '02, 2:17am
Originally posted by PPN
Just steal the code from forumdisplay.php


// set defaults
$perpage = intval($perpage);
if (empty($perpage) or $perpage>200) {
$perpage=30;
} ummmm... so where abouts do we put that code?

Erwin
Thu 5th Sep '02, 7:37am
I assume we can use this:



// set defaults
$perpage = intval($perpage);
if (empty($perpage) or $perpage>200) {
$perpage = $memberlistperpage;
}

John
Tue 10th Sep '02, 10:26am
Yes, that's right Erwin

DWZ
Tue 10th Sep '02, 10:28pm
Sorry, still a bit confused here. So where abouts in the code do I put this? i.e. what line? replacing any code?

Erwin
Wed 11th Sep '02, 12:00am
Find in memberlist.php



if (intval($perpage)==0) {
....
...
}


I can't remember what is between the { } but just replace it all.

Replace with:



$perpage = intval($perpage);
if (empty($perpage) or $perpage>200) {
$perpage = $memberlistperpage;
}

Erwin
Wed 11th Sep '02, 12:01am
Btw, DWZ, I'm located in Melbourne too. :)

DWZ
Wed 11th Sep '02, 12:24am
hmmm... well, I think I found it. I found the code::
if (intval($perpage)==0) {
// NUMBER OF RECORDS PER PAGE
$perpage = $memberlistperpage;
}then replced it with:
if (intval($perpage)==0) {
// NUMBER OF RECORDS PER PAGE
$perpage = intval($perpage);
if (empty($perpage) or $perpage>200) {
$perpage = $memberlistperpage;
}but then I get this everytime I go to memberlist.php
Parse error: parse error, unexpected $ in /home/dwz/public_html/forums/memberlist.php on line 234Line 234 is just
?>When I took out the added code for this fix it worked fine again. :confused:
Originally posted by Erwin
Btw, DWZ, I'm located in Melbourne too. :) really? cool :) where abouts?

Erwin
Wed 11th Sep '02, 1:52am
Notice I said REPLACE the old code with the new.

You still have



if (intval($perpage)==0) {


in the new code - just REMOVE that line. :) The parse error is because you have 2 "if" lines, with that extra "if" line and an open { without another } - just erase that line and you'll be fine.

I'm working in the Defence Plaza on Bourke Street. We had a bomb scare earlier today! Had to evacuate... gave me a fright.

DWZ
Wed 11th Sep '02, 4:28am
Originally posted by Erwin
Notice I said REPLACE the old code with the new.

You still have



if (intval($perpage)==0) {


in the new code - just REMOVE that line. :) The parse error is because you have 2 "if" lines, with that extra "if" line and an open { without another } - just erase that line and you'll be fine. ahh, ok, sorry about that :) I thought when you said to replace that code, you only meant that bit in the middle :)

Working fine now :D
Originally posted by Erwin
I'm working in the Defence Plaza on Bourke Street. We had a bomb scare earlier today! Had to evacuate... gave me a frightAhh, ok, I'm over in the Box Hill area :)

Bomb scares aren't good though :S