sqli-labs-php7环境搭建及通关记录

本文详细记录了sqli-labs-php7环境在Linux和Windows下的搭建过程,以及使用hackbar2、burpsuite等工具的配合。介绍了SQL语法、WAF绕过方法和多种注入技术,包括联合注入、盲注、时间注入等。同时,文章还总结了less1到less65关卡的通关策略,并提供了基础SQL查询命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqli-labs-php7环境搭建及通关记录

sqli-labs-php7环境搭建及通关记录

学了一个星期的sql注入,将学习过程记录在博客,以后可以查看。

学习视频来自b站的up主:crowsec
视频链接:https://space.bilibili.com/29903122
sqli-labs-php7链接:https://github.com/skyblueee/sqli-labs-php7.git


一. 环境搭建及常用工具


Linux环境搭建(我这里用的是kali linux):
1.启动mysql服务:sudo service mysql start

2.登录mysql:sudo mysql -uroot -p 输入密码进行登录

3.设置密码:set password for 'root'@'localhost' =password('xxx');,然后输入:flush privileges;回车

4.下载sqli-labs-php7:git clone https://github.com/skyblueee/sqli-labs-php7.git

5.将sqli-labs-php7移动到apache2的目录下并改名为sqli:sudo mv sqli-labs-php7 /var/www/html/sqli

6.修改sqli配置文件:vi /var/www/html/sqli/sql-connections/db-creds.inc,将dbpass的值改为之前设置的mysql密码,保存退出

7.启动apache服务:sudo service apache2 start

8.访问127.0.0.1/sqli,点击set database后,如果没有出现报错就配置好了。


Windows环境搭建:
1.下载phpstudy(百度解决)

2.下载sqli-labs-php7.zip,然后解压到phpstudy安装目录下的www/html文件夹下

3.启动phpstudy的apache服务和mysql服务

4.修改db-creds.inc,将dbpass设置为mysql密码

5.访问127.0.0.1/sqli,点set database,如果没有报错就配置成功。


插件及工具 :
1.我使用的是firefox浏览器,到插件库里找到hackbar2并安装。

2.burpsuite,强大的工具,盲注可以用得到(功能及用法百度),或者自己写python脚本进行盲注

3.cookie editor,用于cookie注入。



二. sql语法记录、waf绕过方法、注入方法总结


判断包裹的方式:
1.单引号'
2.单引号+单括号')
3.单引号+单括号+单括号'))
4.双引号"
5.双引号+单括号")
6.双引号+单括号+单括号"))
7.无包裹


sql注释方式:
--+ 用于url中

--空格 用于url中

;%00 应对于对输入有过滤的情况

/**/ 用于提交大数据包,waf绕过

/*!1,2,3*/ mysql内联注释,只能用于mysql,waf绕过

# 用于POST表单中

或其他可用于替换的编码


注入方式总结:
1.联合注入
2.盲注
3.时间注入
4.上传和读取注入
5.GET注入
6.POST注入
7.二次注入
8.请求头注入(ua,referer,cookie)
9.基于报错注入
10.参数污染
11.宽字节注入
12.堆叠注入


waf绕过:
1.白盒绕过(从代码执行顺序绕过)
2.黑盒绕过(架构层面、资源限制角度、协议层面、规则层面)
3.fuzz绕过


sql注入常用到的函数:
database() database() 显示当前使用的数据库

left() left(database,1)='s' 判断当前数据库名前1位是否为s,布尔型`

right() select right(database(),1); 同left,从右边开始

regexp select user() regexp 'r' user()的结果是root,regexp为匹配root的正则表达式

like select user() like 'ro%' 匹配与regexp相似

substr(a,b,c) substr('abc',2,1) 从2位置开始截取abc字符串1位的长度

ascii() ascii('a') 将a转换为ascii值,为97

chr()或ord() chr(97) 将ascii值转换为字符串

show variables like '%secure%'; 查看secure-file-priv当前的值,布尔型,表示读取和写入文件的权限

load_file() load_file('E:\\hello.txt') 读取本地的E:\hello.txt文件

into outfile select 'hello' into outfile 'E:\\1.txt'; 写入一个1.txt,内容是hello,文件位置在E:\

sleep() sleep(5) 睡5秒

if(a,b,c) if(1>2,3,4) 如果1>2成立,返回3,不成立则返回4

length() length(database()) 返回当前使用数据库名的长度

updatexml(a,b,c) updatexml(str,xpath,str) 在第二个参数写入错误的xpath参数,会引起报错,来获得需要的数据

asc select * from x order by 1 asc; 使用升序排列

desc select * from x order by 1 desc;使用降序排列

lines lines terminated by xxx 以xxx为结尾



三. less1–less65通关方式


基础sql命令:
查库:

select schema_name from information_schema.schemata

查表:

select table_name from information_schema.schemata where table_schema='security'

查列名:

select column_name from information_schema.columns where table_name='users'

查字段:

select username,password from security.users

总结:主要都是围绕这几个语句进行查询

tips:
在学习阶段可以在sqli-labs代码中,加入以下,对sql语句进行判断,方便学习

echo $sql;
echo "<br>";

less-1:
1.在url结尾加入?id=1,此时查询到数据并回显
2.id=1后加入',会发现sql语句进行报错,以此判断id=1后是由什么符号进行包裹
3.less-1是以'进行的包裹,在结尾使用注释符--+,再次执行,此时可以发现返回数据正常
4.总结:只要能知道是以什么符合对sql查询语句进行包裹,就可以在url中拼接sql语句进行执行
5.http://127.0.0.1/sqli/?id=1'order by 3 --+
      http://127.0.0.1/sqli/?id=-1' union select 1,2,(查询语句)--+使用联合查询,重复此过程直到取出需要的数据。
less-2:
1.和less-1一样,但没有对id进行包裹,因此直接输入一个不存在的id值即可。
2.wp:http://
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值