私は、システムがmysqlインジェクションに対して安全でないことを顧客に指摘しようとしています。ユーザーの完全なリスト(* from ..を選択)を表示するか、システムに新しいユーザー/管理者を挿入して、後でログインできるようにする証拠が欲しいのですが。
これは、私が構築するシステムを単純化したものです。
PHPログインサイト:
$user = $_POST["user"];
$pwd = $_POST["pwd"];
$query1 = "INSERT INTO user_log (username, password,ip) VALUES ('$user','$pwd','127.1.1.1')";
$result1 = mysql_query($query1) or die("Query failed: " . mysql_error());
$query2 = "select * from login where name = '$user' and pass = '$pwd' limit 1";
$result2 = mysql_query($query2) or die("Query failed: " . mysql_error());
mysqlテーブルは次のようなものです。
CREATE TABLE `user_log` (
`idadmin` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
`ip` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idadmin`)
)
CREATE TABLE `login` (
`idlogin` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`pass` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idlogin`)
)
完全に安全ではないことがわかりますが、これを注入するのは非常に難しいと思います。
- 私が最初に試したのはINSERTクエリに挿入することでしたが、user_logテーブルにスパムを送信する以外に、適切な結果を得るのは困難でした。
- 最初のquery1を通過し、代わりにquery2に挿入されたクエリを作成しようとしました。しかし、これは引用のために非常に複雑でした。
この特定のコンテキストで注入を行うためのアイデアや他の種類のテクニックはありますか?