[보안패치] 그누보드 4.33.03 정보
[보안패치] 그누보드 4.33.03
첨부파일
본문
            
            
                        4.33.03 (11.02.10)
: 회원권한 코드 수정 (코타군님)
: 글읽기 포인트가 설정되어 있을때 글읽기 레벨이 1로 설정되어 있으면 포인트 차감이 제대로 되지 않던 오류 수정 (forever님, 진서기님)
: [보안패치] SQL INJECTION 공격에 대비한 코드 수정 (개미인간님)
adm/member_form.php
<?=get_member_level_select("mb_level", 1, $member[mb_level], $member[mb_level])?>
bbs/board.php
if (!get_session($ss_name))
{
sql_query(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' ");
// 자신의 글이면 통과
if ($write[mb_id] && $write[mb_id] == $member[mb_id]) {
;
} else if ($is_guest && $board[bo_read_level] == 1 && $write[wr_ip] == $_SERVER['REMOTE_ADDR']) {
// 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
;
} else {
/*
// 회원이상 글읽기가 가능하다면
if ($board[bo_read_level] > 1) {
if ($member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");
insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}
*/
// 글읽기 포인트가 설정되어 있다면
if ($board[bo_read_point] && $member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");
insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}
set_session($ss_name, TRUE);
}
common.php
        
if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}
if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}
if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}
if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}
        
                
                
    : 회원권한 코드 수정 (코타군님)
: 글읽기 포인트가 설정되어 있을때 글읽기 레벨이 1로 설정되어 있으면 포인트 차감이 제대로 되지 않던 오류 수정 (forever님, 진서기님)
: [보안패치] SQL INJECTION 공격에 대비한 코드 수정 (개미인간님)
adm/member_form.php
<?=get_member_level_select("mb_level", 1, $member[mb_level], $member[mb_level])?>
bbs/board.php
if (!get_session($ss_name))
{
sql_query(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' ");
// 자신의 글이면 통과
if ($write[mb_id] && $write[mb_id] == $member[mb_id]) {
;
} else if ($is_guest && $board[bo_read_level] == 1 && $write[wr_ip] == $_SERVER['REMOTE_ADDR']) {
// 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
;
} else {
/*
// 회원이상 글읽기가 가능하다면
if ($board[bo_read_level] > 1) {
if ($member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");
insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}
*/
// 글읽기 포인트가 설정되어 있다면
if ($board[bo_read_point] && $member[mb_point] + $board[bo_read_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");
insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
}
set_session($ss_name, TRUE);
}
common.php
if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}
if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}
if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}
if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}
댓글 전체
                    감사합니다.
패치 따라가기 힘들군요~~~
            
            
            
                        
            
                    패치 따라가기 힘들군요~~~

                    감사합니다. 패치해야겠네요...~~;                            
            
            
            
                        
            
                    
                    common.php 의
$sfl = preg_replace("/[^\w\|\,]/", "", $sfl);
이 코드가 배포후 수정 되었습니다.
            
            
            
                        
            
                    $sfl = preg_replace("/[^\w\|\,]/", "", $sfl);
이 코드가 배포후 수정 되었습니다.
                    common.php  패치 후 
/adm/board_list.php 에서 선택 수정 하면 오류가 발생 합니다.
select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php
            
            
            
                        
            
                    /adm/board_list.php 에서 선택 수정 하면 오류가 발생 합니다.
select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php

                    고맙습니다.                            
            
            
            
                        
            
                    
                    감사 합니다. 잘 쓰겠습니다.                            
            
            
            
                        
            
                    
                    감사합니다.^^                            
            
            
            
                        
            
                    
                    감사합니다...^^                            
            
            
            
                        
            
                    
                    감사합니다.^^                            
            
            
            
                        
            
                    
                    감사합니다.
패치후 게시판 생성시 아래와같은 오류가 발생되네요.(euc-kr버전)
common.php 파일 이전 버전것으로 사용하면 이상없구요.
========================================================
select count(*) as cnt from g4_board a where (1) and ( (agr_id like '%G01%') ) order by a.gr_id, a.bo_table asc
1054 : Unknown column 'agr_id' in 'where clause'
error file : /adm/board_list.php
            
            
            
                        
            
                    패치후 게시판 생성시 아래와같은 오류가 발생되네요.(euc-kr버전)
common.php 파일 이전 버전것으로 사용하면 이상없구요.
========================================================
select count(*) as cnt from g4_board a where (1) and ( (agr_id like '%G01%') ) order by a.gr_id, a.bo_table asc
1054 : Unknown column 'agr_id' in 'where clause'
error file : /adm/board_list.php

                    $sfl = preg_replace("/[^\w\|\,\.]/", "", $sfl);
로 수정 되었습니다.
오류나는 분들 코드를 수정해 주십시오.
            
            
            
                        
            
                    로 수정 되었습니다.
오류나는 분들 코드를 수정해 주십시오.
                    방금전 수정 패치 했는데도 저도 같은 에러가 나네요...
select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php
            
            
            
                        
            
                    select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php
                    저도 수정패치 한후해도 에러나네요.
select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php
            
            
            
                        
            
                    select count(*) as cnt from g4_board a where (1) order by agr_idabo_table asc
1054 : Unknown column 'agr_idabo_table' in 'order clause'
error file : /adm/board_list.php

                    common.php
        
if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}
if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}
if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}
if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}
를 변경합니다.
불편을 드려 죄송합니다.
            
            
            
                        
            
                    if (isset($sca)) {
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
$qstr .= '&sca=' . urlencode($sca);
}
if (isset($sfl)) {
$sfl = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sfl);
$qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드)
}
if (isset($stx)) { // search text (검색어)
$stx = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $stx);
$qstr .= '&stx=' . urlencode($stx);
}
if (isset($sst)) {
$sst = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sst);
$qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}
를 변경합니다.
불편을 드려 죄송합니다.
                    다시 수정하니 에러가 없어졌습니다.
관리자님 수고가 많으시네요. ^.^*
            
            
            
                        
            
                    관리자님 수고가 많으시네요. ^.^*

                    임시 방편으로 게시판 생성했었는데,,
코드 수정했습니다.
감사드립니다.
            
            
            
                        
            
                    코드 수정했습니다.
감사드립니다.
                    수정후 하니 에러없이 잘되네요.
관리자님 감사합니다^^
            
            
            
                        
            
                    관리자님 감사합니다^^

                    감사합니다 
수정하러 갑니다.
            
            
            
                        
            
                    수정하러 갑니다.

                    어흑.. 패치 밀린 곳이 있는데, 큰일이군요                            
            
            
            
                        
            
                    
                    감사합니다^ㅡ^                            
            
            
            
                        
            
                    
                    감사합니다.                            
            
            
            
                        
            
                    
                    패치어카지...ㅠㅠ새로하던거 패치를.ㅠ......ㅠ......................................                            
            
            
            
                        
            
                    
                    패치 완료!
감사합니다.
            
            
            
                        
            
                    감사합니다.

                    항상 캄사합니다.                            
            
            
            
                        
            
                    
                    $member 가 아니라 $mb 입니다. 수정하려는 대상의 레벨을 갖고와야 하니까요.
<td>회원 권한</td>
<td><?=get_member_level_select("mb_level", 1, $member[mb_level], $mb[mb_level])?></td>
// 회원권한을 SELECT 형식으로 얻음
function get_member_level_select($name, $start_id=0, $end_id=10, $selected='', $event='')
{
global $g4;
$str = "<select name='$name' $event>";
for ($i=$start_id; $i<=$end_id; $i++)
{
$str .= "<option value='$i'";
if ($i == $selected)
$str .= " selected";
$str .= ">$i</option>";
}
$str .= "</select>";
return $str;
}
            
            
            
                        
            
                    <td>회원 권한</td>
<td><?=get_member_level_select("mb_level", 1, $member[mb_level], $mb[mb_level])?></td>
// 회원권한을 SELECT 형식으로 얻음
function get_member_level_select($name, $start_id=0, $end_id=10, $selected='', $event='')
{
global $g4;
$str = "<select name='$name' $event>";
for ($i=$start_id; $i<=$end_id; $i++)
{
$str .= "<option value='$i'";
if ($i == $selected)
$str .= " selected";
$str .= ">$i</option>";
}
$str .= "</select>";
return $str;
}

                    bbs/board.php?bo_table=photo1&sca=자연/거리  
이런식으로 주소가 돼있는데 출력이 되지않습니다.
common.lib.php 이전파일로 교체하면 잘 되고요...
            
            
            
                        
            
                    이런식으로 주소가 돼있는데 출력이 되지않습니다.
common.lib.php 이전파일로 교체하면 잘 되고요...

                    일단 임시 방편으로 
$sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
위 내용중 \/ 를 삭제해 보세요
            
            
            
                        
            
                    $sca = preg_replace("/([\'\"\`\<\>\(\)\;\/~@?=%&!]+)/", "", $sca);
위 내용중 \/ 를 삭제해 보세요

                    감사합니다.                            
            
            
            
                        
            
                    
                    정말 감사합니다.                            
            
            
            
                        
            
                    
                    감사합니다.....                            
            
            
            
                        
            
                    
                    감사합니다.                            
            
            
            
                        
            
                     
  
  
  
  
  
  
  
  
  
  
  
  
 