41

如何使用基于整数的手动SQL注入技术

 5 years ago
source link: http://www.freebuf.com/articles/web/185274.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

zeuM7rI.jpg!web

今天,我将教大家如何使用基于整型的手动SQL注入技术来对MySQL数据库进行渗透测试。提醒一下,这是一篇写给newbee的文章。话不多说,我们直奔主题!

SQL注入线上实验室

1. 初学者可以使用这个网站来练习自己的SQL注入技术。

2. 访问线上实验室,请点击【 传送门 】。

第一步:对查询语句动手

首先,访问网站地址:

testphp.vulnweb.com/artists.php?artist=1

接下来,我们在URL地址结尾添加一个单引号并查看网站是否存在SQL注入漏洞:

testphp.vulnweb.com/artists.php?artist=1′

RFJFbuR.jpg!web

此时,我们通过修改查询语句成功接收到了数据库返回的错误消息。但是,我们却没有收到关于输入数据(我们所添加的那个单引号)的错误提示,这也就说明我们的输入已经成功了。现在我们就可以知道,我们所输入的这个字符串(单引号)是不会让数据库返回相关错误信息的,接下来我们尝试修复一下这个问题,去掉单引号:

3A7Bvqz.jpg!web

上图说明,我们在查询语句中采用了基于整型的方法之后就不会在触发错误了,这也就是我们所说的基于整型的SQL注入方法。

第二步:查询数据库条目

确认了漏洞存在之后,我们就可以尝试弄清楚这个数据库表中到底有多少列了,这里我们可以使用order by命令实现。我们可以不断尝试输入任意值的数字来测试数据库中有多少列。

BFfaaem.jpg!web

上图中,我输入了数字4,我想要查询4列,但是得到了一条错误提示。所以我得尝试其他数字,试试3呢?

JRNVfaU.jpg!web

大家可以看到,这里没有返回SQL错误。是的,就是3列!

第三步:查询后台数据库表和表名

接下来,我们需要获取表路径,这里使用union all select:

zyAz6vr.jpg!web

上图表明,union all select语句返回了表.2和3的表路径:

eM73Ifb.jpg!web

上图显示了database() & version()命令的执行结果,并拿到了数据库名和版本信息。

大家可以看到,数据库名为acuart,版本信息为5.1.73-0ubuntu0.10.04.1。

第四步:导出数据库表

Group_concat()函数可以从一个group中获取与非空值级联的字符串,这里我们可以使用这个函数来枚举出数据库中所有的表。除此之外,我们还可以使用Information_Schema来查看关于数据库中对象的元数据:

qMfMvmE.jpg!web

uuuIVvB.jpg!web

上图显示的是目标数据库中导出的所有表信息,即:carts,categ,featured,guestbook,pictures,products,users。

第五步:导出数据库表中所有列的数据

接下来,我们导出目标数据库中user表的所有数据:

y6jayuv.jpg!web2EfEVb7.jpg!web

从上图的结果中可以看到,这个数据库表中包含的列条目有:uname,pass,cc,address,email,name,phone,cart。

第六步:导出所有的用户名和密码

接下来,我们就可以导出目标数据库中所有的用户名及密码了:

J7Z3Mrv.jpg!webB7Vr2uj.jpg!web

这样一来,我们就成功拿到了用户名为test且密码为test的用户信息了。

后话

希望大家可以不断练习,并尝试导出数据库表中包含以下列名的数据:address, email, name, phone, cart。

最后,祝大家Happy Hacking!

*参考来源: gbhackers ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK