有时候我们得到的 网站后台的登录密码 = 网站服务器的远程桌面服务登录密码 = FTP服务登录密码 (有几率)
可使用综合性扫描软件扫描,在配合手工检测确认注入点,得到注入点后用sqlmap
https://www.freebuf.com/sectool/164608.html 超详细SQLMap使用攻略及技巧分享
SQLMAP注入之用户手册 打印细看
https://www.cnblogs.com/hongfei/p/3872156.html
参数:-r
sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。
比如文本文件内如下:
POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0
id=1
当请求是HTTPS的时候你需要配合这个--force-ssl参数来使用,或者你可以在Host头后门加上:443
参数:-m
文件中保存url格式如下,sqlmap会一个一个检测
www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
www.target3.com/vuln3/id/1*
从文件中加载HTTP请求
参数:--cookie,--load-cookies,--drop-set-cookie
这个参数在以下两个方面很有用:
1、web应用需要登陆的时候。
2、你想要在这些头参数中测试SQL注入时。
可以通过抓包把cookie获取到,复制出来,然后加到--cookie参数里。
在HTTP请求中,遇到Set-Cookie的话,sqlmap会自动获取并且在以后的请求中加入,并且会尝试SQL注入。
如果你不想接受Set-Cookie可以使用--drop-set-cookie参数来拒接。
当你使用--cookie参数时,当返回一个Set-Cookie头的时候,sqlmap会询问你用哪个cookie来继续接下来的请求。当--level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数。
HTTP User-Agent头
参数:--user-agent,--random-agent
默认情况下sqlmap的HTTP请求头中User-Agent值是:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可以使用--user-anget参数来修改,同时也可以使用--random-agnet参数来随机的从./txt/user-agents.txt中获取。
当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。
HTTP(S)代理
参数:--proxy,--proxy-cred和--ignore-proxy
使用--proxy代理是格式为:http://url:port。
当HTTP(S)代理需要认证是可以使用--proxy-cred参数:username:password。
--ignore-proxy拒绝使用本地局域网的HTTP(S)代理。
HTTP请求延迟
参数:--delay
可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
设定超时时间
修改注入的数据
参数:--tamper
sqlmap除了使用CHAR()函数来防止出现单引号之外没有对注入的数据修改,你可以使用--tamper参数对数据做修改来绕过WAF等设备。
下面是一个tamper脚本的格式:
# Needed imports
from lib.core.enums import PRIORITY
# Define which is the order of application of tamper scripts against
# the payload
__priority__ = PRIORITY.NORMAL
def tamper(payload):
‘‘‘
Description of your tamper script
‘‘‘
retVal = payload
# your code to tamper the original payload
# return the tampered payload
return retVal
可以查看 tamper/ 目录下的有哪些可用的脚本
https://blog.csdn.net/qq_34444097/article/details/82717357
https://blog.csdn.net/Litbai_zhang/article/details/99681398
https://www.cnblogs.com/milantgh/p/4343898.html
注入技术
测试是否是注入
参数:--technique
这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式。
支持的探测方式如下:
B: Boolean-based blind SQL injection(布尔型注入)
E: Error-based SQL injection(报错型注入)
U: UNION query SQL injection(可联合查询注入)
S: Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
‐‐risk 这个参数就是把测试等级提高,如是 --risk 3 那么测试就是最高,这样SQLMap会测试更加多的注?语句。
举个栗?:
没有加 ‐‐risk 3 的情况下,SQLMap 就测试 5hoanqu‘ and 789=789 and ‘hcme‘=‘hcme ,
但是如果加了 ‐‐risk 3 参数,就会增加测试语句, 5hoanqu‘) and 789=789 and (‘hcme‘=‘hcme ,对?起来,虽然只是加了2个字符,但是意义却相差很多了的。
‐‐level 3 假设存在注?的URL为: http://baidu.com/new.php?nid=5haoanqu ,在GET请求中,我们?前看得到的参数就?个:nid.但是当我们访问过?个?站之后,我们都会得到?个cookie,当我们继续访问?站的时候,浏览器就会加载我们的cookie,?因为cookie存在我们本地,我们?是可以控制这个cookie的,所以我们就可以在cookie上?加?我们注?测试语句。?像UserAgent头也是?样的,具体你可以看看以下?章:
通常情况下我们直接在浏览器看到的URL上?的参数就是被带?数据库查询的参数,但是事实上并不是全部的东西都如我们眼睛看到的样?。
注意点:
* ?这个参数来指定测试语句的位置,这个通常?在注?伪静态页?。也可以?在正常注?点,在??确认某个位置可注?的使?,使?该参数可提高注?效率。
相关伪静态注??章和视频如下:
渗透?记-利?SQLMAP伪静态注?
似懂非懂..
经发送到 Repeater 加 ‘ 测试发现是注?。
注?看测试的位置,是在值的后?。 形如 http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92.html 的URL格式,?概率就是伪静态,即伪装成静态?页的动态链接。这种情况我们是可以测试注?的。 (92‘ 用来尝试测试)
与正常的测试?法没啥不同,唯?的就是指定测试payload的位置。
?如本例中payload位置是放在 http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92[payload].html ,那么我们就告诉sqlmap在哪注?就可以了,通过在放置payload位置加上 * 就可以了,即: sqlmap -u
http://www.baidu.com/index.php/Home/English/en_NewsDetail/id/92*.html
剩下的就是按正常的注?即可。
找到注入点,用sqlmap注入,查询是否是系统权限sa,后再执行--os-shell,交互式os_shell界面,但不是真正的shell,只是像而已,手注的操作都可以使用,如果无回显,可用远程日志dnslog来判断shell是否成功执行命令结果,或者执行命令不知道; 不必太过拘泥于结果显示回来;
echo 1 > 网站地址\1.txt ,发现是可行的
--sql-shell 权限不够大,执行一些数据库命令
找到注入点,用sqlmap注入,查数据库、当前用户权限,爆出物理路径
是高权限,--os-shell,--sql-shell
原文:https://www.cnblogs.com/Black-Sweater/p/14050248.html