学习编写poc,先从最简单的DVWA靶场的sql注入练习
Low
POC:
"""
Level——low:
"""
import requests
import browser_cookie3
cookie = browser_cookie3.firefox()
response = requests.get("http://192.168.21.211/DVWA/vulnerabilities/sqli/?id=1'&Submit=Submit#",cookies=cookie)
re = 'syntax'
flag=re in str(response.content)
if flag:
print("It looks likely vulnerable")
else:
print("It is strong")
运行结果
这段代码使用了requests库和browser_cookie3库来进行HTTP请求,并判断给定的URL是否存在SQL注入漏洞。
首先,代码导入了requests和browser_cookie3库。
接下来,通过`cookie = browser_cookie3.firefox()`使用browser_cookie3库获取firefox浏览器中的所有Cookie信息。这里使用的是firefox浏览器的方法,所以在其他浏览器中可能无法获取到Cookie信息。可以换其他浏览器方法,比如cookie = browser_cookie3.chrome()或者cookie = browser_cookie3.load()获取全部浏览器的信息,但是效果好像没有指定浏览器好
然后,使用`requests.get()`方法发送带有Cookie的GET请求。`"http://192.168.21.211/DVWA/vulnerabilities/sqli/?id=1'&Submit=Submit#"`是请求的URL,`cookies=cookie`将获取到的Cookie添加到请求中。
接下来,定义了一个变量re,并将其设为字符串"syntax"。
然后,使用`re in str(response.content)`来判断字符串"syntax"是否存在于响应内容中。将判断结果赋值给变量flag。
最后,根据flag的值来输出相应的结果。如果flag为True,则输出"It looks likely vulnerable",表示存在可能的漏洞;如果flag为False,则输出"It is strong",表示不存在漏洞。
请确保在运行代码之前已经安装了requests库和browser_cookie3库,并且将请求的URL替换为适合你的实际情况的URL。另外,要注意浏览器的兼容性,不同浏览器可能对cookie的存储方式不同。
Medium
POC:
##Level——Medium
import requests
import browser_cookie3
cookie = browser_cookie3.firefox()
#这里因为Content-Type:application/x-www-form-urlencoded,所以post构造为该模式(根据Payload内的值)
datas = {"id":"1'","Submit":"Submit"}
response = requests.post("http://192.168.21.211/DVWA/vulnerabilities/sqli/?id=1'&Submit=Submit#",cookies=cookie,data=datas)
re = 'syntax'
flag=re in str(response.content)
if flag:
print("It looks likely vulnerable")
else:
print("It is strong")
运行结果
这段代码与之前的代码类似,但使用POST请求发送数据来测试是否存在SQL注入漏洞。
首先,导入了requests和browser_cookie3库。
接下来,使用browser_cookie3.firefox()来获取firefox浏览器中的所有Cookie信息。
然后,定义了一个字典datas,其中包含了POST请求需要的数据。这里使用了{"id":"1'","Submit":"Submit"}作为数据。根据具体情况,你可能需要根据实际的Payload来构造合适的数据。
然后,使用requests.post()方法发送带有Cookie和数据的POST请求。"http://192.168.21.211/DVWA/vulnerabilities/sqli/?id=1'&Submit=Submit#"是请求的URL,cookies=cookie将获取到的Cookie添加到请求中,data=datas将数据添加到请求中。
接下来,定义了一个变量re,并将其设为字符串"syntax"。
然后,使用re in str(response.content)来判断字符串"syntax"是否存在于响应内容中。将判断结果赋值给变量flag。
最后,根据flag的值来输出相应的结果。如果flag为True,则输出"It looks likely vulnerable",表示存在可能的漏洞;如果flag为False,则输出"It is strong",表示不存在漏洞。
请确保在运行代码之前已经安装了requests库和browser_cookie3库,并且将请求的URL替换为适合你的实际情况的URL。另外,要注意根据实际情况构造合适的POST数据。
High
POC:
import requests
import browser_cookie3
cookie = browser_cookie3.firefox()
datas = {"id":"1'","Submit":"Submit"}
response1 = requests.post("http://192.168.21.211/DVWA/vulnerabilities/sqli/session-input.php",cookies=cookie,data=datas)
response2 = requests.get("http://192.168.21.211/DVWA/vulnerabilities/sqli/",cookies=cookie)#high中,查询和回显不在一个页面中,所以在这里分post查询和get获取页面
re = 'wrong'#这里换了特征语句
flag=re in str(response2.content)
if flag:
print("It looks likely vulnerable")
else:
print("It is strong")
运行结果
这段代码与之前的代码类似,也使用了requests和browser_cookie3库来进行HTTP请求,并判断给定的URL是否存在SQL注入漏洞。不过这里测试点与之前的测试点不同,需要发送两个请求来测试漏洞。
首先,通过`browser_cookie3.firefox()`使用browser_cookie3库获取Firefox浏览器中的所有Cookie信息。需要注意的是,由于不同浏览器中Cookie的存储方式可能不同,所以在这里需要根据实际情况来选择相应的方法。
然后,定义了一个字典`datas`,其中包含了POST请求需要的数据。这里使用了`{"id":"1'","Submit":"Submit"}`作为数据。
接下来,通过`requests.post()`方法发送带有Cookie和数据的POST请求。`"http://192.168.21.211/DVWA/vulnerabilities/sqli/session-input.php"`是请求的URL,`cookies=cookie`将获取到的Cookie添加到请求中,`data=datas`将数据添加到请求中。
然后,再通过`requests.get()`方法发送带有Cookie的GET请求。`"http://192.168.21.211/DVWA/vulnerabilities/sqli/"`是请求的URL,`cookies=cookie`将获取到的Cookie添加到请求中。
接下来,定义了一个变量re,并将其设为字符串"wrong"。
然后,使用`re in str(response2.content)`来判断字符串"wrong"是否存在于响应内容中。将判断结果赋值给变量flag。
最后,根据flag的值来输出相应的结果。如果flag为True,则输出"It looks likely vulnerable",表示存在可能的漏洞;如果flag为False,则输出"It is strong",表示不存在漏洞。
请确保在运行代码之前已经安装了requests库和browser_cookie3库,并且将请求的URL替换为适合你的实际情况的URL。另外,要注意浏览器的兼容性,不同浏览器可能对cookie的存储方式不同。