代码审计实战—DWVA-sql-impossible

0x00 前言

如饥似渴的学习ing。
前置章节
https://blog.csdn.net/qq_36869808/article/details/83029980

0x01 start

1.白盒测试

impossible是说不可能的意思,所以我们就直接进行白盒测试。
先来看下关键代码:

$id = $_GET[ 'id' ];

	// Was a number entered?
	if(is_numeric( $id )) {
		// Check the database
		$data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' );
		$data->bindParam( ':id', $id, PDO::PARAM_INT );
		$data->execute();
		$row = $data->fetch();

		// Make sure only 1 result is returned
		if( $data->rowCount() == 1 ) {
			// Get values
			$first = $row[ 'first_name' ];
			$last  = $row[ 'last_name' ];

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

1.1 首先使用is_number来判断输入

代码审计实战—DWVA-sql-impossible_第1张图片
首先检测是不是数字或者数字字符串。

1.2 $db->prepare

准备要执行SQL语句。
代码审计实战—DWVA-sql-impossible_第2张图片

1.3 POD

代码审计实战—DWVA-sql-impossible_第3张图片

$data->bindParam( ':id', $id, PDO::PARAM_INT );

对数据使用了PDO技术,防止sql注入。

1.4 $data->rowCount() == 1

代码审计实战—DWVA-sql-impossible_第4张图片
这里只有是1的时候参会返回结果。成功的防止了脱库的现象出现。

你可能感兴趣的:(代码审计实战—DWVA-sql-impossible)