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的防护性
$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)
을 직접 사용하면 보호 메커니즘이 아무런 효과도 생성하지 않습니다.일반적인 생각이므로 직접 이해해 보세요.
요즘 일이 너무 바빠서 대부분의 초대를 무시해야 했고 가끔 몇 마디만 답장을 하기도 하고 많은 말을 할 시간도 없어서 미안하다는 말밖에 할 수 없었습니다.
직접
를 사용하십시오 전체 사용자 테이블의 내용이 터져
$uid= "888' or '2=2";