그누보드에 로그인 해킹차단 소스가 안먹어요..
이글리글
11년 전
조회 7,691
html/bbs/login_check.php는 특별한 소스내용이 없구요(그누보드4)
어떤분이 그누보드4 스킨으로 해킹차단스킨을 올려주셨는데
html/extend/ar.hack.passwd.php 이걸 extend에 넣으라고 했는데
넣은후
아이디 비밀번호를 틀리게 입력하면 로그인체크.php에 있는
"아이디나 비밀번호가 다릅니다" 이것만뜨고 extend에 넣은 해킹차단스킨내용인
로그인 몇회 실패 이런게 안나오네요..
소스 첨부합니다.
아래는 해킹차단소스입니다..
--------------------------------해킹차단소스------------------------
</P>
<P><?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/*</P>
<P>제목 : 그누보드 비밀번호 해킹 차단 툴 (extend 등록파일)
출처 : 로빈아빠 freeimage.kr 2011-11-19
목적 : 암호 해킹 시도시 IP 차단 (로그인 스크립트로 암호를 찾아내려는 경우)
설치 : 첨부파일 ar.hack.passwd.php 을 extend 에 넣어둠
다운 : <A href="<a href="http://freeimage.kr/bbs/board.php?bo_table=tip_gnu" target="_blank" rel="noopener noreferrer">http://freeimage.kr/bbs/board.php?bo_table=tip_gnu</a>"><a href="http://freeimage.kr/bbs/board.php?bo_table=tip_gnu" target="_blank" rel="noopener noreferrer">http://freeimage.kr/bbs/board.php?bo_table=tip_gnu</a></A> (업데이트)
설명 :</P>
<P>1) 로그인시 암호를 잘못입력하는 경우 기록파일에 저장을 한다.
2) 한IP에서 일정시간동안 정해진수 이상 로그인을 시도하면 로그인과다로 표시하고 종료한다.
레벨이 8 이상인 경우 접속제한수가 2배로 됨..
3) 종료시 로그인 시도 담당자와 관리자에게 쪽지를 보낸다.
4) 로그인성공시 실패 기록을 삭제한다.
5) 접속제한수는 제한은 20회 IP차단은 50회 로되어있습니다. 소스에서 수정가능</P>
<P> $max_limit_out=30; //하루동안 50번이상 시도하면 ip를 접근차단으로 지정하고 종료함..
$max_limit_warn=20; //하루동안 20번이상 시도하면 접속을 종료하고 로그인 시도 담당자와 관리자에게 쪽지를 보냄</P>
<P>
*/</P>
<P>if (strstr($PHP_SELF,"login_check.php") && $_POST[mb_id]) {</P>
<P> $max_limit_out=30; //하루동안 50번이상 시도하면 ip를 접근차단으로 지정하고 종료함..
$max_limit_warn=20; //하루동안 20번이상 시도하면 접속을 종료하고 로그인 시도 담당자와 관리자에게 쪽지를 보냄
$mb=sql_fetch("select mb_id,mb_password,mb_level from $g4[member_table] where mb_id='$_POST[mb_id]' limit 1");
if ($mb[mb_level]>=8) {
$max_limit_out=$max_limit_out*2;
$max_limit_warn=$max_limit_warn*2;
}
$key1=date("ymd")."|$_SERVER[REMOTE_ADDR]";</P>
<P> $ty_password=sql_password($_POST[mb_password]);
if ($mb && $mb[mb_password]==$ty_password) {
sql_fetch("delete from $g4[point_table] where mb_id='$mb[mb_id]' and <A href="mailto:po_rel_table='@login_check'">po_rel_table='@login_check'</A> and po_rel_action='$key1'");
}
else if ($mb && $mb[mb_password]!=$ty_password) {</P>
<P> $row=sql_fetch("select count(*) as cnt from $g4[point_table] where mb_id='$mb[mb_id]' and <A href="mailto:po_rel_table='@login_check'">po_rel_table='@login_check'</A> and po_rel_action='$key1'");</P>
<P> if ($row[cnt]>$max_limit_out) {
//접근차단 지정
if (!strstr($config[cf_intercept_ip],$_SERVER[REMOTE_ADDR])) {
if ($config[cf_intercept_ip]) $config[cf_intercept_ip].="\n";
$config[cf_intercept_ip].=$_SERVER[REMOTE_ADDR];</P>
<P> $sql="update $g4[config_table] set cf_intercept_ip='".mysql_escape_string($config[cf_intercept_ip])."'";
//echo $sql;
sql_query($sql);
}
//alert("접근시도 과다. 접근차단 됨");
exit;
}</P>
<P> // 포인트 건별 생성
$sql = "insert into $g4[point_table] set
mb_id = '$mb[mb_id]',
po_datetime = '$g4[time_ymdhis]',
po_content = '".addslashes("로그인시도:$_SERVER[REMOTE_ADDR] $_POST[mb_password] $_SERVER[HTTP_USER_AGENT]")."',
po_point = '0',
po_rel_table = <A href="mailto:'@login_check'">'@login_check'</A>,
po_rel_id = '$mb[mb_id]',
po_rel_action = '$key1' ";
sql_query($sql);</P>
<P> //접근이 너무 많음 차단함..
if ($row[cnt]>$max_limit_warn) {</P>
<P> $tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
$me_id = $tmp_row[max_me_id] + 1;</P>
<P> // 본인에게 쪽지보냄
$sql = " insert into $g4[memo_table]
( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
values ( '$me_id', '$mb[mb_id]', '$mb[mb_id]', '$g4[time_ymdhis]', '로그인시도:$row[cnt]회 (시도암호:$_POST[mb_password] $_SERVER[REMOTE_ADDR])\n$_SERVER[HTTP_USER_AGENT]' ) ";
sql_query($sql); </P>
<P> // 관리자에게 쪽지보냄
if ($mb[mb_id]!=$config[cf_admin]) {
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
$me_id = $tmp_row[max_me_id] + 1;
// 쪽지 INSERT
$sql = " insert into $g4[memo_table]
( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
values ( '$me_id', '$config[cf_admin]', '$mb[mb_id]', '$g4[time_ymdhis]', '로그인시도:$row[cnt]회 (시도암호:$_POST[mb_password] $_SERVER[REMOTE_ADDR])\n$_SERVER[HTTP_USER_AGENT]' ) ";
sql_query($sql);
}</P>
<P> alert("로그인 실패 횟수를 초과했습니다. 다음날 로그인을 시도해주세요. ($row[cnt]/$max_limit_warn)");
exit;
}
}
}</P>
<P>?>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
4년 전
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
s
sinbi
2년 전
�
해피정
2년 전
아하 그렇죠. 숫자의 모습은 아니죠. 점을 분기해서 뭔가 대조를 해야하려나.
휴우 고민되네요. 댓글 감사합니다
휴우 고민되네요. 댓글 감사합니다
�
해피정
2년 전
<?php
include_once("../../common.php");
$a = "5.5.8.2.6";
echo "a = {$a}<br>";
if ($a > 5.4) {
if (G5_STRING_ENCRYPT_FUNCTION == 'create_hash') {
echo "5.4 이상이고 create_hash 입니다<br>";
} else {
echo " 5.4 이상이고 create_hash 아닙니다<br>";
}
} else {
echo " 5.4 미만 입니다<br>";
}
if ($a > 5.6) {
if (G5_STRING_ENCRYPT_FUNCTION == 'create_hash') {
echo "5.6 이상이고 create_hash 입니다<br>";
} else {
echo " 5.6 이상이고 create_hash 아닙니다<br>";
}
} else {
echo " 5.6 미만 입니다<br>";
}
위와 같은 코드로 테스트 하니 아래와 같이 결과값이 표시되네요
https://www.happyjung.com/demo/gnuboard/version_test.php
a = 5.5.8.2.6
5.4 이상이고 create_hash 입니다
5.6 미만 입니다
include_once("../../common.php");
$a = "5.5.8.2.6";
echo "a = {$a}<br>";
if ($a > 5.4) {
if (G5_STRING_ENCRYPT_FUNCTION == 'create_hash') {
echo "5.4 이상이고 create_hash 입니다<br>";
} else {
echo " 5.4 이상이고 create_hash 아닙니다<br>";
}
} else {
echo " 5.4 미만 입니다<br>";
}
if ($a > 5.6) {
if (G5_STRING_ENCRYPT_FUNCTION == 'create_hash') {
echo "5.6 이상이고 create_hash 입니다<br>";
} else {
echo " 5.6 이상이고 create_hash 아닙니다<br>";
}
} else {
echo " 5.6 미만 입니다<br>";
}
위와 같은 코드로 테스트 하니 아래와 같이 결과값이 표시되네요
https://www.happyjung.com/demo/gnuboard/version_test.php
a = 5.5.8.2.6
5.4 이상이고 create_hash 입니다
5.6 미만 입니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
if (G5_GNUBOARD_VER > 5.4) {
if (G5_STRING_ENCRYPT_FUNCTION == 'create_hash') {
$ty_password = get_encrypt_string($_POST['mb_password']);
} else {
$ty_password = sql_password($_POST['mb_password']);
}
} else {
$ty_password = sql_password($_POST['mb_password']);
}
<?php
$a = 5.5.8.2.6; // 그누 버전
if($a > 5.4) echo 5; // 에러 발생