安全面试之MYSQL注入

本文阅读 3 分钟
首页 安全分享,WEB安全 正文

Mysql注入:

1、sql注入漏洞原理

开发者没有在网页传参点做好过滤,导致恶意sql语句拼接到数据库进行执行

2、sql注入分类:联合注入、布尔盲注、时间盲注、堆叠注入、宽字节注入、报错注入

3、联合注入的步骤

找传参点-->判断闭合符-->判断列数-->判断显示位-->查询database()-->查表-->数据

4、盲注分类

布尔盲注(页面回显长度:burp里的Content-Length)、时间盲注(页面回显时间:burp包的右下角)、Dnslog

5、盲注函数

if()、sleep()、substr()、left()、limit、ascii()、length() 5、报错注入原理:

6、报错注入函数,例如:floor() group by、exp()、updatexml()、extractvalue()

7、Dnslog注入原理

7.1、利用load_file()函数读取共享文件

7.2、共享文件形式:\hex(user()).dnslog.cn/或者\host\

7.3、利用myslq的load_file()函数解析拼接过的dnslog域名,进而带出数据

8、判断闭合符方式:

构造真和假: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

9、堆叠注入原理

在mysql中,分号代表一个查询语句的结束,所以我们可以用分号在一行里拼接多个查询语句

10、宽字节注入原理

10.1、数据库使用gbk编码

10.2、使用反斜杠进行转义

11、sql注入绕waf

11.1、代替空格:/*/、/!*/、+、%09、%0a、%00、括号

11.2、关键字:16进制、char()、字符串拼接

11.3、等价函数替换:sleep()==benchmark()、if()==case when then else end、ascii()==ord()、substr()==substring()

11.4、内联注释:/!   /

12、sqlmap常用参数

-r:用于post型注入,指定txt文件的post数据包

--os-shell:用户获取shell

--os-cmd:执行系统命令

--force- ssl:sqlmap跑https站,此参数主要用来伪造一个ssl证书,或者在host地址后面加一个443端口

--tamper:指定绕过用的脚本文件

-u:指定url,通常用于get型注入

-p:指定注入点,例如:python sqlmap.py -u http://127.0.0.1/index.php?id=1&;mid=2&page=3 -p "page"

:指定注入点,例如:python sqlmap.py -u http://127.0.0.1/index.php?id=1&mid=2&page=3  注意:号也可以用于伪静态的注入,用法同前面一样,直接在注入点后面加*

--fresh-queries:刷新缓存

--current-db:获取当前数据库名称

--time-sec=5:设置延时时间

-m:用于sqlmap批量跑注入,指定一个含有多个url的txt文件

--level 3:指定测试等级,等级越高,检查项越多,共1-5个等级

--risk 3:指定风险等级,等级越告,payload越复杂,共1-3个等级

--random-agent:指定随机agent头

--batch:默认选项

13、sql注入获取webshell的方式

1、写文件(需要写权限)

2、写日志文件(不要学权限,但是需要通过命令开启日志记录功能,而且还需要把日志文件的路径指定到网站根路径下面)

14、sql注入防御

1、过滤敏感字符,例如:information_schema、into out_file、into dump_file、’、"、()

2、预编译

3、站库分离:增加攻击者的时间成本、防止通过数据库拿到webshell

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/m0_63127854/article/details/125577112
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复