1.存在脆弱性的代码行数
2.代码可能会受到的网络安全攻击类型
3.结合代码简述漏洞产生的原因
方法:
1.给的完整源代码,我们可以直接拿过来运行进行黑盒测试,当然是在没有代码审计的基础上进行,也不失为⼀种方法
2.直接白盒审计,干看(需要⼀定的代码基础和代码调试基础,在⼀定程度上也会配合代码运行进行黑白的切换进行测试)
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import urllib
import socketserver
from http.server import SimpleHTTPRequestHandler
class MyHandler(SimpleHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_head('Content-type','text/html')
self.end_headers()
def do_Get(self):
print("got get request %s" % (self.path))
hql = urllib.splitquery(self.path)[1]
uri_c = str(hql)
print('cmd===%s' % (uri_c))
file = open(uri_c)
self.wfile.write(file.read())
file.close
def start_server():
httpd = socketserver.TCPServer(("0.0.0.0",8090),MyHandler)
print("Starting httpd...")
httpd.serve_forever()
if __name__ == "__main__":
start_server()
1.存在脆弱性的代码行数
Flag:13
2.代码可能会受到的网络安全攻击类型
Flag:任意文件读取漏洞
3.结合代码简述漏洞产生的原因
Flag:在do_GET方法中,通过urllib.splitquery(self.path)获取到参数并给他赋值到uri_c,再使用open()打开uri_c中的内容,从而产生任意文件读取漏洞。