sqli-labs

Posted by CoCo1er on 2018-11-25
Words 988 and Reading Time 3 Minutes
Viewed Times

sqli-labs

less-1

首先先过一遍基本操作

  1. 加单引号报错,检查报错原因(去掉外层单引号还剩’1’’ limit 0,1)可知sql代码中采用’$id’,尝试 and 1=1 和 and 1=2 发现存在注入

  2. 采用union注入,先判断列数,发现在4时报错可知列数为3

  1. 具体一系列注入过程如下:
  • 查看当前数据库和用户(有时可省,但其实很重要,root权限所有库都可以访问)
  • 由系统库爆所有数据库
  • 爆数据库的表
  • 爆表的列
  • 爆列的字段
1
2
3
4
5
6
7
手工注入:
Mysql 有一个系统数据库 information_schema,存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。
以下为一般的流程。
猜数据库 select schema_name from information_schema.schemata
猜某库的数据表 select table_name from information_schema.tables where table_schema='xxxxx'
猜某表的所有列 Select column_name from information_schema.columns where table_name='xxxxx'
获取某列的内容 Select *** from ****

1
2
3
4
补充:
( flag自己实验建的,为熟练操作放到了另一个数据库下)
( self-flag 有点问题改成了 self_flag )
( 选内容的时候如果不采用group_concat可能受限于sql语句只展示第一条,最好把内容全部联合展示 )

( 上图爆的表中的列,后续where语句中选择了数据库self_flag,即该库中的所有表的所有列,正确思路是选择table_name即选择表 )

( self_flag下的flaggg表 )

( 这里注意比对一下flag如果在database()即当前数据库下可以才可以直接用flaggg )

less-2

查注入点(可以利用id=1\这样来查),猜测sql语句直接就是SELECT * from table_name WHERE id=$id;

( 前面检测步骤同上,注意到语句正确但是没有回显,原因是id=1占用了回显,改为id=-1即可让union后部分语句回显,有的时候可以全部列出则不需要改前部错误也行…个人做题遇到过在此一提 )

后续注入过程同less-1

less-3

查注入点,猜猜测sql语句直接就是SELECT * from table_name WHERE id=(‘$id’);
注入过程同上

less-4

查注入点,猜猜测sql语句直接就是SELECT * from table_name WHERE id=(“$id”);

less-5

当我们输入语句正确是不再回显数据而是“You are in” 即盲注类型

SQL盲注

  • 基于布尔SQL盲注
  • 基于时间的SQL盲注
  • 基于报错的SQL盲注(即报错注入

(有时候不一定要局限于盲注就只用于数据不回显)

做题前先学一学这三种盲注方法!(这里做一个简单的介绍)

BooleanSQL盲注

构造逻辑判断,利用逻辑函数进行

常用的函数有 left() 、ascii() 、substr() 、ord() 、mid() 、regexp().

大体上可以理解为构造对数据库名,表名等的字符串的判断函数

eg: ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1)) 通过索引数据库名对应字符串的位数来确定数据库名长度(超过位数就不回显)

注:盲注通常需要写脚本来自动化爆破数据库名,表名,列名和字段.

基于时间的SQL盲注

利用if(条件,执行1,执行2)函数特性和sleep()函数的特性
【benchmark()太吃资源不建议用】

eg : if(ascii(substr(database(),1,1))>115,0,sleep(5))%23 // if条件为真执行前者,否则执行后者也就是延迟5s

(后续做补充)

基于报错的SQL盲注

前两种盲注比较好理解,基于报错的盲注不是很懂,乘机学习了一波(甩一波资料)
https://www.2cto.com/article/201303/192718.html 双查询注入
http://www.cnblogs.com/lcamry/articles/5509124.html exp报错注入
http://www.cnblogs.com/lcamry/articles/5509112.html 利用bigint 溢出进行报错注入
https://www.cnblogs.com/backlion/p/8554749.html xpath报错注入详解

持续更新ing~