pdo - mysql 简单注入疑问
迷茫
迷茫 2017-04-17 15:28:49
0
3
794


mysql数据库表user结构如图,php版本5.4.31

$uid="1'; select * FROM user;";

直接用:

$result=mysql_query("select * from user where uid='$uid' ");

mysql_error()显示

`You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * FROM user;'' at line 1`

和用pdo查询:

$sql="select * from user where uid='$uid' ";
$res=$pdo->query($sql);

显示$res是空

请问大神我构造的mysql注入语句是不是有错...
我主要目的是想测试不同的mysql注入语句,pdo_mysql的防护性

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(3)
大家讲道理

$uid="1'; select * FROM user;";이런 종류의 진술은 실제로 테스트와 관련이 없지만 직접 테스트할 수 있습니다
mysql_query("select * from user where uid=1; select * from user"). 나는 이 내용을 깊이 조사하지 않았지만 두 가지 테스트는 동일하며 둘 다 주입됩니다.

주입 문제의 가장 간단한 예는 $username = "It's test"인데, 실행되면 "select * from user where username='It's test"이 되어 구문 오류가 발생합니다. PDO 등은 전처리를 통해 이러한 문제를 방지합니다. 예를 들어 $pdo->query("select * from user where username=?", array("It's test"));은 삽입을 방지하기 위해 적절하게 리디렉션됩니다. 그러나 예제에서 $pdo->query($sql)을 직접 사용하면 보호 메커니즘이 아무런 효과도 생성하지 않습니다.

일반적인 생각이므로 직접 이해해 보세요.

요즘 일이 너무 바빠서 대부분의 초대를 무시해야 했고 가끔 몇 마디만 답장을 하기도 하고 많은 말을 할 시간도 없어서 미안하다는 말밖에 할 수 없었습니다.

迷茫
mysql_query 일 때, 스 플라이 싱 sql 문은 불법 입니다.
select * from user where uid='1'; select * FROM user;'
별도의 닫기를 닫는 방법을 찾아 다음 코드로 변경하십시오.
$uid="1'; select * FROM user where uid='";
pdo는 자동으로 전송되며 다음 문장이 쿼리되므로 비어 있습니다.
select * from user where uid='1\'; select * FROM user;'
迷茫
나는 혼자서 문제를 발견했다 :

직접

를 사용하십시오 전체 사용자 테이블의 내용이 터져 $uid= "888' or '2=2";

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿