SQL注入 Sqli-Labs 1-4 实战笔记

相聚往往短暂而告别常常是永恒,人们所不能承受的哀伤却是世界永恒的法则。

Sqli - labs 安装与lesson1-4实战

所需环境:

1. PHP
2. MYSQL
3. Apache/Nginx

以上三项Debian都自带了,2与3直接开启即可,但是有几点要注意:

1. Debian下的MySql每次登录的时候默认需要授权,即必须使用sudo,可以修改配置文件忽略默认授权,修改方法在之前的文件有提起过.
2. Apache存放文件放在/var/www/html/目录下
3. sqli - labs 使用的PHP5编写的,但是Debian默认安装PHP7,兼容性太差,需要手动删除PHP7然后安装PHP5,安装方法前面的文章(Debian笔记)也提起过,这里不做复述.

下载安装

切换到 /var/www/html/ 目录下,使用命令:

git clone https://github.com/Audi-1/sqli-labs

下载好后,在sql-connections文件夹下的“db-creds.inc”文件
修改mysql用户名和密码为你自己的密码,数据库地址记得填写127.0.0.1,这一点在之前的文章也说过.

浏览器打开

http://127.0.0.1/sqli-labs/

为了方便下载,已经保存到当前服务器下

下载地址

Sqli Labs Lesson 1 实战笔记

之所以先讲 1-4 章节是因为这四课都是非常基础的注入,完全可以归纳在一个知识点上.若不熟悉可以先温习前面的基础知识:MYSQL基础知识点

判断是否存在注入

检查是否存在注入

加上单引号发现报错了,判断为字符型注入.

判断字段数

字段数

输入4的时候报错,3正常,说明存在3个字段

判断可显示字段

可显示字段

可以看到2,3的位置可以插入查询,下面来探测一些数据看看.

探测信息

信息探测

可以看到当前的数据库,用户

探测表名

表名

可以看到探测出来三个表,按照习惯猜测,users这个表存储的应该是用户名账号密码等信息,那么继续探测这个表有哪些字段内容.

探测列名

字段内容

根据回显,确认username,password字段就是需要的,接下来查询他们的字段内容即可.

探测数据

数据信息

得到所需信息,注入结束.

Lesson 2-4 实战

之所以1-4放在一起讲是因为注入方式一样的,只是稍微区别了一下数字型与字符串型,数字型不需要闭合,直接order by判断字段后面都一样,字符串型的需要闭合,举个例子:

lesson 1 :?id=1 ' union xxx --+ 
lesson 2 :?id=-1 union xxx --+ 
lseeon 3 :?id=-1') union xxx --+
lseeon 4 :?id=-1") union xxx --+ 

总结下:

1. 判断存在注入后,再判断是字符型还是数字型,字符型就要闭合一下
2. 像lesson1-4的注入内容直接在客户端显示了,使用上面的套路流程走一波
3. 最后面可以注释掉,也可以选择去闭合后面的,但是有些麻烦
4. 如果是数字型注入,可以使用INT溢出代替空格,即:?id=1e66union xx等同于?id=6 union xx

关于Lesson 1-4 暂时就告一段落,后面的实战练习涉及知识点才是真正常用的,比如盲注,显错注入等等,需要的知识点累计也越来越多,这是好事,关于绕过WAF注入其实就那么一些套路,什么加密混淆反复调用大小写编码之类的,往后专门出一篇文章就练习绕过WAF注入.

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%