........
依要求填入 mysql 語法。
<?php $dbhost = 'localhost:3306'; $dbuser = 'root'; $dbpass = '123qwe'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die(mysqli_connect_error().PHP_EOL); mysqli_select_db( $conn, 'dbi' ) or die('Error: '.mysqli_error($conn).PHP_EOL); $sql = "SELECT * FROM ......"; $retval = mysqli_query( $conn,$sql ) or die('Error: '.mysqli_error($conn).PHP_EOL); while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo "{$row[0]}\t{$row[1]}\n"; } mysqli_free_result($retval); mysqli_close($conn); ?>
$_GET['plang']
由網址加問號取得內容,如以下範例變數 plang=python。
http://kvm3.deyu.wang/sqlinj1.php?plang='python'
$_GET['plang']
。
$_GET['plang']
以單引號括起來。
%20
取代。
plang='a' or 1
。
plang=a' or 'a'='a
。
$_GET['plang']
中的單引號、雙引號、倒斜線等符號,加上倒斜線跳脫其功能,並使用 echo "$plang\n"
在 mysqli_query
查詢命令之前印出變數 $plang
內容。
preg_match
函式限制變數 $_GET['plang']
只能非空白字元,否則印出 "Not Match"。
preg_match
函式限制變數 $_GET['plang']
必須是小寫英文字母,否則印出 "Not Match"。
curl -sN http://kvm3/pmatch1a.php?"plang='ruby'"
preg_match
函式限制變數 $_GET['plang']
必須是 1 到 6 個小寫英文字母,否則印出 "Not Match"。
curl -sN http://kvm3/pmatch1c.php?"plang=ruby"