zoukankan      html  css  js  c++  java
  • BugKu-SQL注入2

    题目链接

    戳我

    简单尝试

    首先当然是去试试万能密码了,emmmm,全被过滤了......

    试试弱口令呢?

    admin admin
    admin 123456
    admin123 admin123
    ... ...

    然后,竟然还是弱口令.......(admin|admin123),但我岂能就这么放过它,嘿嘿,开始手注

    题目给除了一些已经过滤的字符,通过尝试,发现并不是啊!!!因为我是用or,竟然也提示我非法字符?!?!!

    所以,只能借用一下别的大佬的fuzz字典咯~~

    查找过滤符号

    判断执行语句

    在一开始的尝试中,发现一共有三种返回状态:

    • 非法字符
    • 密码错误
    • 用户名错误
      所以,可以判断他是先检查用户名,在检查密码,所以可以从用户名下手~

    既然布尔注入的字符都被无情的过滤了,但是!^没有被过滤啊,所以想到使用异或进行注入

    爆库名

    • 构造payload:admin'^(length(database())=3)^'
    • 发现,只有在括号内的值为真时,才返回username error,所以数据库的长度为3.但是仍然不能做下去啊,因为or空格啥的都被过滤了,可太难受了,但是!我偷偷瞄了一眼别的师傅的wp,当时我就傻眼了,竟然是靠表单属性猜......

    直接猜passwd的长度吧

    • 因为数据库里保存密码很有可能以md5的形式保存,所以这里对密码的长度要长点,看到结果我当时就傻眼了...因为回显长度都是367..

    • 没办法,一个一个看咯但也不是没办法嘛,枚举完后,从第一个开始按住方向下,看到username一闪而过,就往回找几个就找到了~~

    • 知道passwd的长度是32了,看来是md5没错了,那就开始爆数据吧

    爆passwd的数据

    • 构造payload:admin'^(ascii(substr((passwd),1,1))=48)^'
    • emmmmm,逗号被过滤了,但是!没有关系,因为substr(columns,start,step)==substr(columnsfrom(start)for(step))
    • 但是之前尝试发现,for也被过滤了,所以只能使用substr(columnsfrom(start)),因为substr默认第三个参数是1,重新构造payload:admin'^(ascii(substr((passwd)from(1)))=48)^'
    • 开始爆破:

    • 虽然最后的数据长度都是一样的,但是比手工一点一点改快的多,只要按住方向下键,一直找就可以了,为了方便点,所以一定要先对payload1进行排序,再找

    使用md5解码:

    尝试登陆后台,拿到flag:

    一共三种方法(目前我知道的)

    • 弱口令
    • post注入
    • 源码泄露
      - 通过工具直接拿到他的目录,然后下载flag文件,打开即可
  • 相关阅读:
    九个合理的个人所得税避税方案
    百度搜索技巧
    jsoup方法string转document
    java正则
    多线程之join方法
    java获取当前日期时间代码总结
    Error与Exception的区别,Java常见异常Execption总结
    Google Chrome调试js入门
    Resource temporarily unavailable用户的连接数设置的太小
    所有javax包
  • 原文地址:https://www.cnblogs.com/quail2333/p/12840030.html
Copyright © 2011-2022 走看看