sqlmap使用教程

sqlmap的使用教程

作者:刘行 李江涛

    毫无疑问地说,sqlmap是一款功能十分强大的sql注入工具,这篇文章我们就来学习一下sqlmap的一些基本的使用。

    接下来我们就以南邮上一道简单的宽字节注入题来学习sqlmap的一些简单的命令。
题目如下:

    废话不多说咱们直接打开sqlmap这款工具,使用以下命令爆的当前数据库:

python sqlmap.py -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --current-db	    

    其中sqlmap是基于python2.x环境的.py文件 -u选项后面跟的是数据库的url地址, --cureent-db 命令限定操作对象为当前数据库。



如下所示爆的当前数据库为:sae-chinalover
爆数据表,命令如下:

ptyhon sqlmap.py -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --tables -D sae-chinalover  

结果如下:

接下来我们尝试爆第一个表(表ctf)中的列,命令如下:

python sqlmap.py -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --dump -T ctf -D sae-chinalover

结果如下:

    可见我们已经爆出表ctf中的数据了,不过可惜并没有我们想要的flag,所以我们可以返回上一个步骤继续爆其他表中的数据。经过我们的尝试终于在再表ctf4中找到了我们想要的flag。

    如上题所示如果我们一个表一个表的去爆,最后肯定会被搞得身心俱疲,这时候我们就会想,那么我们有没有只用一个命令就能能一下将某数据库下的所有表的数据给爆出来呢?答案是有的。
我们可以使用下面这个命令只用输一次就能将指定数据库下面所有表中的数据给爆出来了:

python sqlmap.py -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --dump-all -D sae-chinalover

    这里需要注意最好用-D参数指定数据库,否则这爆的可就不仅仅是一个数据库中的数据了,而是所有库表的所有数据,这数据可就好有的一跑了,能把你等的焦头烂额,想当初我就在试验这个命令的时候栽过跟头。

命令执行结果太长了,在这里就不展示了,结果实现了将sae-chinalover库中所有表中的数据都给跑出来了,当然花费了挺长时间。所以说为了节省时间,最好还是不要一下爆掉所有的表呦,只拿自己需要的就行了。

###其实sqlmap的命令参数还有很多:
参数:–dbs
该参数的作用是,当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库,就比如上次盟新赛中某凡大佬很皮地没有将flag放在当前数据库,而放在了其他的库中,这时候这个参数就排上用场了。简单的搞一下,还以这个题的url为例,结果如下:

爆出来两个库,至于information_schema这个库大家都懂的,就不谈了。

还有参数比如:–count
有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数。
很简单的就不操作了记得用-T制定数据表,-D指定数据可就行了。
参数:–privileges
当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看哪个用户的权限。
这个参数也挺简单的大家可以试试的说。
参数:–roles
列出数据库的管理员角色
参数:–users
当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户,这个参数和上一个类似,都是一些简单的参数,很容易动手尝试一下。
参数:-b;–banner
大多数的数据库系统都有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决与是什么数据库。

    总结一下吧,sqlmap的参数还有很多,sqlmap的功能还有用法也还多着呢,需要我们慢慢地去发现、挖掘。虽然现在网上有很多其他的sql注入工具,像safe3、pangolin、haviji还有什么sql超级注入工具,咱不是针对谁(在坐的各位* * * *)当然他们也确实很好用,但是sqlmap用着才叫有感觉呦。

你可能感兴趣的:(sqlmap使用教程)