SQL注入学习 -- sqli-labs lesson 1
由于对SQL注入不太熟悉,所以就自己搭建了一个sqli-labs的平台.
记录一下自己的学习过程
首先我们要了解一下常规mysql数据库的信息
information_schema() ------ 是mysql自带的数据库,记录了数据库各种信息
schemata ------ 包含各种数据库名信息
tables ------ 各种表名
columns ------ 字段名
下面开始注入
id=1时显示正常,加入单引号看看,报错了
报错的信息为 near ''1'' LIMIT 0,1' ,拆分开就是 ' '1' ' LIMIT 0,1 ' ,可以看到1的那里多了一个单引号而且已经闭合了.所以就要把后面的那个引号注释掉(ps:之前不理解的时候会想,可以直接不用加引号 然后构造payload,但是发现这样子构造语句不能查询到,是因为永远都在''里面了)
下面开始猜字段长度
猜到字段长度只有3
然后查看回显位置
发现并没有正确的显示回显位置,(当时候这里也不懂为什么,然后上网查看了一下,是源代码那里调用函数的问题)
百度了一下,mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有,大概意思就是说只显示一行的数据= =.因为他的查询语句是"SELECT * FROM users WHERE id='$id' LIMIT 0,1",所以把左边的弄为空集(即id那里不能大雨等于1,此外str,float等等都可以)
下面继续进行查询,构造payload为localhost/sqli-labs/Less-1/?id=-1' union select 1,2,3 from information_schema.schemata--+
可以看到回显位置了
下面进行常规的注入操作.先查看当前的数据库名和版本
可以看到当前的数据库名为security,版本是5.7
继续进行查询数据库名
查询到全部的数据库名,然后选security进行爆破
在security数据库中查询表名
看到存在users表,就直接破解
可以看到username和password,直接爆破
最后就把users中所有的用户名和密码查询出来了
总结:这次做了sqli-labs的lesson1,感觉思路清晰不少,一步步地进行注入,学会看报错信息和猜其本身的查询代码,不过还是要继续努力O(∩_∩)O~~
- Sqli-labs学习SQL注入-Lesson 1-10总结
- 通过sqli-labs学习sql注入——进阶挑战之less23-28a
- 通过sqli-labs学习sql注入——基础挑战之less11-22
- 通过sqli-labs学习sql注入——基础挑战之less1-10
- Sqli-labs学习SQL注入-Lesson 11-20总结
- SQLi Labs Lesson27 & Lesson27a
- SQLi Labs Lesson1
- sqli-labs学习教程(三)
- sqli-labs从零开始学习日记(一)
- SQLi Labs Stacked Injections ( Lesson38 - Lesson53 )
- SQLi Labs Lesson28 & Lesson28a
- Sqli-LABS通关笔录-18-审计SQL注入2-HTTP头注入
- SQLi-Labs 学习笔记(Less 1-10)
- 一大清早的惊醒,看别人SQL注入之后,加强学习SQL和参数化查询。
- SQLi Labs Lesson32 & 33 & 34 & 35
- sqli-labs学习教程(二)
- SQLi-Labs 学习笔记(Less 31-40)
- SQLi Labs Challenges ( Lesson54 - Lesson65 )
- Sqli-Labs专业SQL注入测试平台
- SQLi Labs Lesson29 & Lesson30 & Lesson31