2017-10-25 5 views
-1

일부 SQL 주입 기본 사항을 배우고 있습니다. 나는 취약한 애플리케이션 (SQLi Labs)을 가지고 있기 때문에 소스 코드를 볼 수 있으며 mysql 인터페이스와 동일한 결과를 제공하기 위해 URL을 매개 변수화해야하는 방법을 파악하려고 시도 할 수있다. 그러나 내가 해결할 수없는 차이가 있으므로 제발 도와주세요.SQL 삽입 - 웹 ui와 mysql 결과 비교

http://192.168.19.155/sqli-labs/Less-1/?id=2--%20%27%27%20OR%201=1 

URL은 다시 한 행을 나에게 제공합니다

mysql> select * from users where id=3--'' OR 1=1; 
+----+----------+------------+ 
| id | username | password | 
+----+----------+------------+ 
| 1 | Dumb  | Dumb  | 
| 2 | Angelina | I-kill-you | 
| 3 | Dummy | [email protected] | 
| 4 | secure | crappy  | 
| 5 | stupid | stupidity | 
| 6 | superman | genious | 
| 7 | batman | mob!le  | 
| 8 | admin | admin  | 
| 9 | admin1 | admin1  | 
| 10 | admin2 | admin2  | 
| 11 | admin3 | admin3  | 
| 12 | dhakkan | dumbo  | 
| 14 | admin4 | admin4  | 
+----+----------+------------+ 

이것은 URL은 다음과 같습니다

$sql="SELECT * FROM users WHERE id='$id'"; 
$result=mysql_query($sql); 
$row = mysql_fetch_array($result); 

이 MySQL의 쿼리는 다음과 같습니다

은 PHP 코드입니다 ("? id = 2"옵션에서 정의 된) 나머지 쿼리 (- % 20 % 27 % 27 % 20 OR % 201 = 1)는 무시되는 것 같습니다.

URL 쿼리는 mysql 인터페이스처럼 전체 사용자 테이블을 돌려줘야합니다. 입력 필터링이 없으므로 URL 결과가 mysql 인터페이스 출력과 같지 않은 이유를 이해할 수 없습니다. 제발 도와주세요!

감사합니다. Erik

+0

: 당신은 예상되는 응답을하는 방식을 얻기 위해 스크립트를 수정 할 수 있는가? 'ID = 2 % 27 % 20OR % 20 % 271퍼센트 271' 트릭을 할해야 27 = %, 및 상당히 간단합니다. 나는 당신이 그 의견을 가지고 무엇을 성취하려고하는지 확신하지 못한다. '--'는 당신이 [여기] (https://dev.mysql.com/doc/refman/5.7/en/ansi-diff-comments.html)를 볼 수 있기 때문에 조금 까다 롭습니다. 주석 구문 사용을위한 다른 옵션을 보려면 9.6 절을 클릭하십시오. – jh1711

답변

0

사실 mysql_fetch_array은 단 하나의 행에 대한 정보를 반환합니다. 같은 기본 분사 뭔가

while ($row = mysql_fetch_array($result)) { 
    print_r($row); 
}