SQL注入
原理:输入的参数被带入SQL语句中,并在DBMS成功的被执行
HTTP 协议
-
数据共享通常是HTTP服务,对应公网服务器通常只开放对应HTTP服务
-
SMB 文件资源共享、打印机等,不需要使用到公网
网址 :
协议:域名(IP):端口/路劲(文件目录)
- 端口可以省略,默认80、443
在利用sql注入漏洞上传文件的时候我们需要知道
被上传的网页 在web服务器的路径 上传文件要获取哪些权限,也就是有哪些前提条件 上传的文件中我们应该写什么内容,也就是如何写木马程序 上传之后会对服务器造成哪些危害,应该怎么防护
SQL 注入的危害
获取数据—读数据库,读系统文件 文件操作 执行系统命令 改注册表
Web 漏洞
-
Web 1.0 --- 知识共享
-
Web 2.0 --- 在1.0基础上加入了用户与服务器上传数据
-
Web 3.0 --- 元宇宙
MYSQL语法
-
Select age from user.stu where name = "zhangsan"
-
Insert user.stu(name,age) vlaues("zhangsan",18)
-
Update
-
Delete
SQL注入方法
-
报错注入
核心思路:构造恶意输入使MySQL运行出错,当页面使用mysqli_errno报错时,可以使用报错注入进行SQL注入。
-
布尔盲注
核心思路:在原本的SQL语句中构造一个表达式让数据库进行判断。判断无非返回两种情况:真、假。原有 SQL语句应为真;如果构造的语句也为真,执行某个动作,为假则不执行。
-
时间盲注
核心思路:在原本的SQL语句中构造一个表达式让数据库进行判断,判断无非返回两种情况:真、假。如果构 造的语句也为真,进行休眠;为假则不执行任何动作。
-
联合查询
-
通过
0rder by判断查询的字段数量:order by排序函数order by 1将数据库中表的第一列排序 +DESC从大到小 * 根据报错可以判断出数据库的列数(order by 3正常 order by 4报错,则可判断出共有3列)
-
将原本查询语句的査询结果置为空,在union后的查询语句构造我们想要査询的内容;该内容会被显示在页面上
-1'union select 1,2#---- 判断那个字段显示在页面,判断回显的位置- SQL注入的前提是:数据库名称 表名称 字段名称(information_schema库中schemata表可以查数据库名称)
-
查看数据库表的名字:
-1' unionselect database(),2#--------- dvwa -
select table_name from information_schema.table WHERE TABLE_SCHEMA="dvwa"
-
select table_name from information_schema.table WHERE TABLE_SCHEMA="dvwa"
-
- SQL注入的前提是:数据库名称 表名称 字段名称(information_schema库中schemata表可以查数据库名称)
-
SQLMAP
CMD命令:python sqlmap.py -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#"
-
--current-db 获得当前数据库名字
-
--schema 获取所有数据库名字
-
-D “ xxx" --tables 获取XXX数据库中得表得名字
-
-T “xxx” --columns 获取xxx数据库表中得列得名字
-
-C指定列名字
-
-T xxx -C "XXX" --dump 获取xxx数据库表中得XXX列得数据
最后更新时间:2026-10-05 13:16
评论(9) 最新 热门
登录 后才能评论。