PentesterLab靶场sql注入流程

2022/1/28 19:06:23

本文主要是介绍PentesterLab靶场sql注入流程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

环境安装

随便在网上找了个Pentester的靶场,结果是2013年的,那就从2013年的这个靶场开始学习

下载镜像的地址:

https://pentesterlab.com/exercises/web_for_pentester_II/iso

正常找个虚拟机,进行iso的安装

安装完成后,查下虚拟机的IP,直接访问即可http://192.168.29.129/

sql注入

Example 1

万能密码:

自己尝试了几个密码,筛选出了这几个通关的,亲试可用:

admin'or 1=1#

"or"="a'='a

a'or' 1=1--

'or''='

用户名和密码都填一样的,点击提交通关

Example 2

通过order by语句确定字段的长度为3  --此处需要浏览此文的人自行学习,免得就无难度了

加粗部分为所需要填的注入语句,访问后通关

http://192.168.29.129/sqlinjection/example2/?username=1' union select 1,2,3 --+&password=2&submit=%E6%8F%90%E4%BA%A4

Example 3

去猜他的sql语句大概

select * from users where username='a' and password='b'

在尝试过程中发现使用单引号没有作用

尝试去构造及规避:

select * from users where username='\' and password=' or 1=1#'

用\做用户名,or 1=1#做密码直接登录

说白了就是执行了这段:

SELECT * FROM users where username="x" or 1=1#"

Example 4

在通过尝试发现界面会返回错误后,可以使用报错注入

案例4可以尝试报错注入:
http://192.168.29.129/sqlinjection/example4/?req=username and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)

以此类推,找到其他需要的信息

Example 5

起初用order by 来爆字段长度,结果发现一直报错

如果order by无法使用则直接上union 用字段来尝试破试出长度,发现长度就是之前试出来的3

union select 1,2,3

增加一个长度4,报错:

 

之后修改数字1,2的信息即可:

 

直接暴库即可,直接拿sqlmap去爆它,我这边有篇sqlmap的文章,可以看我的安全专栏里面有介绍:

 

Example 6

同样先爆字段长度用order by,发现这个可以爆,长度是3

之后再用union思路一样:

Example 7

属于时间盲注,此处界面没有显示信息的地方,只能通过猜字段的形式来进行

通过大于、小于、等于来进行,发现本库的字段为21

http://192.168.29.129/sqlinjection/example7/?id=1 and if(length(database())=21,sleep(5),1) --+

通过sqlmap爆一下,判断出来能注入后直接爆:

Example 8

此处的案例是二次注入,使用

a' union select 1,2,3# 进行二次注入:

查询列表,爆url,通过dirsearch爆出目录users,虽然是500但证明存在这个目录:

 

尝试列表中的数字,发现4可以进行注入:

 

Example 9

宽字节注入尝试,对于mysql数据库的测试:

发现存在注入,添加成功

%df%27%20or%201=1%23

 大家可以安装后自己尝试,sql注入对于现在大厂基本上已经防的很厉害了,所以大家可以学习下安全漏洞相关的思路,也可以应用于其他功能测试中,用于验证功能异常。

希望对大家有帮助!

 

 

 

 

 

 



这篇关于PentesterLab靶场sql注入流程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程