Sql注入
1、sql注入漏洞原理
开发者没有在网页传参点做好过滤,导致恶意 sql 语句拼接到数据库进行执行
2、sql注入分类
联合注入 、布尔盲注 、时间盲注 、堆叠注入 、宽字节注入 、报错注入
3、堆叠注入原理
在 mysql 中,分号 代表一个查询语句的结束,所以我们可以用分号在一行里拼接多个查询语句
4、宽字节注入原理
a 数据库使用 gbk 编码
b 使用反斜杠进行转义
5、报错注入原理:
a 报错注入函数,例如:floor() 、group by 、exp() 、updatexml() 、extractvalue()
6、Dnslog注入原理
a 利用 load_file() 函数读取共享文件
b共享文件形式:\hex(user()).dnslog.cn/ 或者 \host\
c 利用 mysql 的 load_file() 函数解析拼接过的 dnslog 域名,进而带出数据
7、联合注入的步骤
a 找传参点
b 判断闭合符
c 判断列数
d 判断显示位
e 查询database()
f 查表
g 数据
8、盲注分类
a 布尔盲注(页面回显 长度 :burp 里的 Content-Length )
b 时间盲注(页面回显 时间 :burp 包的 右下角 )、Dnslog
9、盲注函数
if() 、sleep() 、substr() 、left() 、limit 、ascii() 、length()
10、判断闭合符方式:
构造真和假:id=1 and 1=1 、id=1' and 1=2 、=1" or 1=1 、') or 1=2 、and 234=234 、and 1 、or 1 、and 1^1 、&&1 、||0
11、sql注入绕waf
a 代替空格:/*/ 、/!*/ 、+ 、%09 、%0a 、%00 、括号
b 关键字:16进制 、char() 、字符串拼接
c 等价函数替换:sleep()==benchmark() 、if()==case when then else end 、ascii()==ord() 、substr()==substring()
d 内联注释:/! /
12、sqlmap常用参数
a -r :用于post型注入,指定 txt 文件的 post 数据包
b -u :指定url,通常用于 get 型注入
c -p:指定注入点,例如: python sqlmap.py-u http://127.0.0.1/index.php?id=1&mid=2&page=3 -p "page"
d :指定注入点,例如:python sqlmap.py-u http://127.0.0.1/index.php?id=1&mid=2&page=3 注意: 号也可以用于伪静态的注入,用法同前面一样,直接在注入点后面加 *
e -m :用于sqlmap批量跑注入,指定一个含有多个 url 的 txt 文件
f --os-shell :用户获取 shell
g --os-cmd :执行系统命令
h --tamper :指定绕过用的脚本文件
i --level 3 :指定测试等级,等级越高,检查项越多,共 1-5 个等级
j --risk 3 :指定风险等级,等级越告,payload 越复杂,共 1-3 个等级
k --random-agent :指定随机 agent 头
l --batch :默认选项
m --dbms :指定数据库类型
13、sql注入获取 webshell 的方式
a 写文件(需要写权限)
b 写日志文件(不要学权限,但是需要通过命令开启日志记录功能,而且还需要把日志文件的路径指定到网站根路径下面)
14、sql注入防御
a 过滤敏感字符,例如:information_schema 、into out_file 、into dump_file 、' 、" 、()
b 预编译
c 站库分离:增加攻击者的时间成本、防止通过数据库拿到webshell
15、mysql提权方式
a mof提权
b udf提权
XSS:跨站脚本攻击
1、XSS原理
开发人员没有做好过滤,导致我们可以闭合标签进而插入并执行恶意JS代码
2、xss类型分类
a DOM型 :由 DOM 文档完成解析
b 反射型 :即插即用,没有存储在数据库里面
c 存储型 :被存储在数据库里面,造成持久型的攻击
3、常用的JS函数
a document.cookie() :弹出当前网址的浏览器 cookie
b console.log('xss') :在控制台输出日志
4、绕过方式
a 改变大小写: