[보안패치] 그누보드 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);
위 내용중 \/ 를 삭제해 보세요
감사합니다.
정말 감사합니다.
감사합니다.....
감사합니다.