63 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<div class="body_padded">
 | 
						|
	<h1>Help - SQL Injection (Blind)</h1>
 | 
						|
 | 
						|
	<div id="code">
 | 
						|
	<table width='100%' bgcolor='white' style="border:2px #C0C0C0 solid">
 | 
						|
	<tr>
 | 
						|
	<td><div id="code">
 | 
						|
		<h3>About</h3>
 | 
						|
		<p>When an attacker executes SQL injection attacks, sometimes the server responds with error messages from the database server complaining that the SQL query's syntax is incorrect.
 | 
						|
			Blind SQL injection is identical to normal SQL Injection except that when an attacker attempts to exploit an application, rather then getting a useful error message,
 | 
						|
			they get a generic page specified by the developer instead. This makes exploiting a potential SQL Injection attack more difficult but not impossible.
 | 
						|
			An attacker can still steal data by asking a series of True and False questions through SQL statements, and monitoring how the web application response
 | 
						|
			(valid entry retunred or 404 header set).</p>
 | 
						|
 | 
						|
		<p>"time based" injection method is often used when there is no visible feedback in how the page different in its response (hence its a blind attack).
 | 
						|
		 	This means the attacker will wait to see how long the page takes to response back. If it takes longer than normal, their query was successful.</p>
 | 
						|
 | 
						|
		<br /><hr /><br />
 | 
						|
 | 
						|
		<h3>Objective</h3>
 | 
						|
		<p>Find the version of the SQL database software through a blind SQL attack.</p>
 | 
						|
 | 
						|
		<br /><hr /><br />
 | 
						|
 | 
						|
		<h3>Low Level</h3>
 | 
						|
		<p>The SQL query uses RAW input that is directly controlled by the attacker. All they need to-do is escape the query and then they are able
 | 
						|
			to execute any SQL query they wish.</p>
 | 
						|
		<pre>Spoiler: <span class="spoiler">?id=1' AND sleep 5&Submit=Submit</span>.</pre>
 | 
						|
 | 
						|
		<br />
 | 
						|
 | 
						|
		<h3>Medium Level</h3>
 | 
						|
		<p>The medium level uses a form of SQL injection protection, with the function of
 | 
						|
			"<?php echo dvwaExternalLinkUrlGet( 'https://secure.php.net/manual/en/function.mysql-real-escape-string.php', 'mysql_real_escape_string()' ); ?>".
 | 
						|
			However due to the SQL query not having quotes around the parameter, this will not fully protect the query from being altered.</p>
 | 
						|
 | 
						|
		<p>The text box has been replaced with a pre-defined dropdown list and uses POST to submit the form.</p>
 | 
						|
		<pre>Spoiler: <span class="spoiler">?id=1 AND sleep 3&Submit=Submit</span>.</pre>
 | 
						|
 | 
						|
		<br />
 | 
						|
 | 
						|
		<h3>High Level</h3>
 | 
						|
		<p>This is very similar to the low level, however this time the attacker is inputting the value in a different manner.
 | 
						|
			The input values are being set on a different page, rather than a GET request.</p>
 | 
						|
		<pre>Spoiler: <span class="spoiler">ID: 1' AND sleep 10&Submit=Submit</span>.
 | 
						|
			Spoiler: <span class="spoiler">Should be able to cut out the middle man.</span>.</pre>
 | 
						|
 | 
						|
		<br />
 | 
						|
 | 
						|
		<h3>Impossible Level</h3>
 | 
						|
		<p>The queries are now parameterized queries (rather than being dynamic). This means the query has been defined by the developer,
 | 
						|
			and has distinguish which sections are code, and the rest is data.</p>
 | 
						|
	</div></td>
 | 
						|
	</tr>
 | 
						|
	</table>
 | 
						|
 | 
						|
	</div>
 | 
						|
 | 
						|
	<br />
 | 
						|
 | 
						|
	<p>Reference: <?php echo dvwaExternalLinkUrlGet( 'https://www.owasp.org/index.php/Blind_SQL_Injection' ); ?></p>
 | 
						|
</div>
 |