安全矩阵

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: Martini

马璐学习日记

[复制链接]

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-3-11 21:16:22 | 显示全部楼层
本帖最后由 Martini 于 2020-3-11 21:31 编辑
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char a[][6]={"hello","the","world"};
  5.         char *pa=&a[0][0];
  6.         pa++;
  7.         printf("%c",*pa);
  8. }
复制代码

复习了一下c语言里的指针
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int a();
  5. int a()
  6. {
  7.     int sum = 0;
  8.     int i = 1;
  9.     for(i = 1; i <= 100; i++)
  10.     {
  11.         if(i % 2 == 0)
  12.             sum+=i;
  13.     }
  14.     return sum;
  15. }

  16. int main()
  17. {
  18.     int sum = a();
  19.     printf("1-100之间的偶数和为: %d\n", sum);
  20.     return 0;
  21. }
复制代码

一个求1到100的偶数和c语言程序

回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-3-12 10:44:55 | 显示全部楼层
本帖最后由 Martini 于 2020-3-12 14:02 编辑
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <script>
  7. function text()
  8. {
  9. var txt1=document.getElementById("tx1").value;
  10. var txt2=document.getElementById("tx2").value;
  11. var choose=document.getElementById("sel").value;
  12. var result;
  13. switch(choose)
  14. {
  15. case"+":
  16. result=parseInt(txt1)+parseInt(txt2);
  17. break;
  18. case"-":
  19. result=txt1-txt2;
  20. break;
  21. case"*":
  22. result=txt1*txt2;
  23. break;
  24. case"/":
  25. if(txt2==0)
  26. {
  27. result="除数不能为0";
  28. }
  29. else
  30. {
  31. result=txt1/txt2;
  32. }
  33. break;
  34. }
  35. document.getElementById("div1").innerHTML=result;
  36. }
  37. </script>
  38. </head>
  39. <body>
  40. 第一个数:<input type="text" id="tx1" value=""/>
  41. 第二个数:<input type="text" id="tx2" value=""/>
  42. 运算方式:<select id="sel" name="choose">
  43. <option value="+">+</option>
  44. <option value="-">-</option>
  45. <option value="*">*</option>
  46. <option value="/">/</option>
  47. </select>
  48. <input type="button" value="计算" οnclick="text()"/>
  49. 运算结果:<div id=result></div>
  50. </body>
  51. </html>
复制代码
运行出来的页面是这样

再改改看看哪里错了


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title> </title>
  6.     <script>
  7.         function text() {
  8.             var txt1 = document.getElementById("tx1").value;
  9.             var txt2 = document.getElementById("tx2").value;
  10.             var choose = document.getElementById("sel").value;
  11.             var result;
  12.             switch (choose) {
  13.                 case "+":
  14.                     result = parseInt(txt1) + parseInt(txt2);
  15.                     break;
  16.                 case "-":
  17.                     result =txt1-txt2;
  18.                     break;
  19.                 case "*":
  20.                     result =txt1*txt2;
  21.                     break;
  22.                 case "/":
  23.                     if (txt2 == 0) {
  24.                         result = "除数不能为0";
  25.                     } else {
  26.                         result =txt1/txt2;
  27.                     }
  28.                     break;
  29.             }
  30.             document.getElementById("div1").innerHTML = result;
  31.         }
  32.     </script>
  33. </head>
  34. <body>
  35.     第一个数: <input type="text" id="tx1" value=""/>
  36.     第二个数: <input type="text" id="tx2" value=""/>
  37.     运算方式:  <select id="sel" name="choose">
  38.         <option value="+">+</option>
  39.         <option value="-">-</option>
  40.         <option value="*">*</option>
  41.         <option value="/">/</option>
  42.     </select>
  43.     <input type="button" value="计算" onclick="text()" />
  44.     运算结果: <div id="div1"></div>
  45. </body>
  46. </html>
复制代码
修改过后可以正常运行
但是下面这个不能正常运行,找了很久也没找出来原因
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title> </title>
  6. <script>
  7. function text() {
  8. var txt1 = document.getElementById("tx1").value;
  9. var txt2 = document.getElementById("tx2").value;
  10. var choose = document.getElementById("sel").value;
  11. var result;
  12. switch (choose) {
  13. case "+":
  14. result =parseInt(txt1) + parseInt(txt2);
  15. break;
  16. case "-":
  17. result =txt1-txt2;
  18. break;
  19. case "*":
  20. result =txt1*txt2;
  21. break;
  22. case "/":
  23. if(txt2==0) {
  24. result = "除数不能为0";
  25. } else {
  26. result =txt1/txt2;
  27. }
  28. break;
  29. }
  30. document.getElementById("div1").innerHTML=result;
  31. }
  32. </script>
  33. </head>
  34. <body>
  35. 第一个数:<input type="text" id="tx1" value=""/>
  36. 第二个数:<input type="text" id="tx2" value=""/>
  37. 运算方式:<select id="sel" name="choose">
  38. <option value="+">+</option>
  39. <option value="-">-</option>
  40. <option value="*">*</option>
  41. <option value="/">/</option>
  42. </select>
  43. <input type="button" value="计算" οnclick="text()"/>
  44. 运算结果:<div id="div1"></div>
  45. </body>
  46. </html>
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-3-24 23:20:30 | 显示全部楼层

为了实现上述要求
  1. n=int(input("Enter:"))
  2. m=n/2.0
  3. if mn=int(input("Enter:"))
  4. m=n/2.0
  5. if m*m==n:
  6.     print(m)
  7. else:
  8.     while 1:
  9.         if m*m-n>1e-6 or m*m-n<-1e-6:
  10.             if m*m>n:
  11.                 m=m/2.0
  12.             else :
  13.                 m=1.5*m
  14.         else:
  15.             print(m)
  16.             break
复制代码
中间改了很久最后发现用二分法求开方的话,似乎不能求出一个可开方数的精确根。如果对于奇数可开方数(比如9,25等等)直接调用sqrt函数的话,好像又不符合题目要求了。
对于所有的(只是猜测,没有去证明)的偶数可开方数可以算出精确的开方根。
下面尝试一下计算出奇数可开方数的精确根。
尝试写了很久,发现会有一点漏洞,实在不知道该怎么解决。还是把思路和不知道怎么解决的问题写一下吧。
思路:当m小数点后有足够多的连续数字9或0,则可以直接采用round或int将m替换成相应的精确度更低的数字。
但是实际操作过程中,找到小数点后的思路我只能想出一种比较笨的方法,没有在网上搜索到可以直接定位到小数点位置的函数。(也许我应该搜索定位某一字符的函数)
这种比较笨的方法也就是找到字符串里为'.'的字符,再提取出字符'.'对应的字符串序号,然后对字符'.'后足够多的数字遍历,如果某一小段字符全部为'9',那就用这串连续字符的首个的序号减去字符'.'的序号,得到一个数字i
采用函数round(m,i)得到一个精确度更低的数字,这个数字就是n的根。如果某一小段字符全部为'0',则同理。
问题:比如求9和9.0000...1(足够多个0)的开方根。再降低m的精确度时,会把二者最后输出的开方根都变为3.0.(但这二者的开方根应该是有细微的差别的)
如果说无限接近等于到达的话,那上面的问题也就解决了。但前提是在遍历小数点'.'后的字符时,保证数量足够多。
等以后发现了什么好办法再来解决这个问题。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-3-30 21:23:31 | 显示全部楼层
一、web应用程序简介
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。

一个web应用由多个静态web资源和动态web资源组成,如:
html、css、js文件
Jsp文件、java程序、支持jar包、
配置文件
……
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。

SUN的Servlet规范对JavaWeb应用作了这样的定义“JavaWeb应用由一组Servlet/JSP、HTML文件、相关Java类以及其他可以绑定的资源构成,它可以在由各种供应商提供的符合Servlet规范的Servlet容器中运行”。
在JavaWeb应用中可以包含以下内容:
Servlet组件:标准Servlet接口的实现类,运行在服务器端,包含了被Servlet容器动态调用的程序代码。
JSP组件:包含Java程序代码的HTML文档,运行在服务器端。当客户端请求访问JSP文件时,Servlet容器先把它编译成Servlet类,然后动态调用它的程序代码。
相关的Java类:开发人员自定义的与Web应用相关的Java类。
静态文档:存放在服务器端的文件系统中,如HTML文件、图片文件和声音文件等。当客户端请求访问这些文件时,Servlet容器会先先从服务器上的本地文件系统中读取这些文件,再把它们发送给客户端。
客户端类:有客户端来运行的类。Applet是典型的客户端类。当客户请求访问Applet时,Servlet容器先从服务器上的本地文件系统中读取Applet的class类文件的数据,再把它发送到客户端,由客户端来运行Applet。
web.xml文件:JavaWeb应用的配置文件,采用XML格式。

二、web应用的组成结构
开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。
main—–web应用所在的目录
|
|—-html/css/javascript/jsp等文件(一般都是静态文件,注意这里面的文件都可以被用户访问到!!!不安全)
|—-WEB-INF目录
| |
| |—-calsses目录(java类)
| |—-lib目录(一些jar组件包)
| |—-web.xml(这是web应用的配置文件,非常重要,也非常实用便捷)

在WEB-INF目录的classes及lib子目录下,都可以存放java类文件。在运行时,Servlet容器的类加载器先加载classes目录下的类,再加载lib目录下的JAR文件中的类。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权。
我们注意到Tomcat的安装目录下也有一个lib目录,这个与Web应用中的lib目录的区别在于:
Tomcat的lib子目录:存放的JAR文件不仅能被Tomcat访问,还能被所有在Tomcat中发布的JavaWeb应用访问。
JavaWeb应用的lib子目录:存放的JAR文件只能被当前JavaWeb应用访问。
假如Tomcat类加载器要加载一个MyClass的类,它会按照以下先后顺序到各个目录中去查找MyClass的class文件,直到找到为止,如果所有目录中都不存在MyClass.class的文件,则会抛出异常:
1、在JavaWeb应用的WEB-INF/classes中查找MyClass.class文件。
2、在JavaWeb应用的 WEB-INF/lib目录下的JAR文件中查找MyClass.class文件。
3、在Tomcat的lib子目录下直接查找MyClass.class文件。
4、在Tomcat的lib子目录下JAR的文件中查找MyClass.class文件。
Note:
Tomcat6.x与Tomcat5.x的目录结构有所区别。在Tomcat5.x版本中,Tomcat允许在server/lib目录、common/lib和shared/lib目录下存放JAR文件,这3个目录的区别在于:
在server/lib目录下的JAR文件只可被Tomcat访问。
在shared/lib目录下的JAR文件可以被所有的JavaWeb应用访问,但不能被Tomcat访问。
在common/lib目录下的JAR文件可以被Tomcat和所有JavaWeb应用访问。

回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-3-31 23:45:45 | 显示全部楼层
本帖最后由 Martini 于 2020-3-31 23:50 编辑

获取网络图片方法
  1. import urllib.request
  2. import os ,stat

  3. req = urllib.request.Request(url)
  4. file = "/home/baixiaoxu/desk/file-ttttt.jpg"
  5. req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0')
  6. response = urllib.request.urlopen(url)
  7. html = response.read()
  8. with open(file, 'wb') as f:
  9.    f.write(html)
复制代码


回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-4-1 18:55:31 | 显示全部楼层
本帖最后由 Martini 于 2020-4-1 22:56 编辑

下午配置好了环境安装了burpsuite。
burpsuite---Proxy
Proxy代理模块作为Burpuite的核心功能,拦截http/s的代理服务器,作为一个在浏览器和目标应用程序的中间人,允许拦截,查看,修改在两个方向上的原始数据流。
Burp代理允许通过监视和操控应用程序传输的关键参数和其他数据来查找和探索应用程序的漏洞。通过以恶意的方式修改浏览器的请求,Burp代理可以用来进行攻击,如:SQL注入,cookie欺骗,提升权限,绘画劫持,目录遍历,缓冲区溢出。拦截的传输可以被修改成原始文本,也可以是包含参数或者消息头的表格,也可以十六进制形式,甚至可以呈现出包含HTML或者图像数据的响应消息。
Proxy里有四个模块。
1.Intercept
用于显示和修改HTTP请求和相应,通过你的浏览器和Web服务器之间。在BurpProxy的选项中,可以配置拦截规则来确定请求是什么和响应被拦截(比如:范围内的项目,与特定文件扩展名,项目要求与参数)



raw:这里显示的是纯文本形式的消息。在文本窗口的底部提供了一个搜索和加亮功能,可以用它来快速地定位出消息中的感兴趣的字符串,如错误消息。在搜索的左边有一个弹出项,让你来处理大小写问题,以及是使用简单的文本搜索还是正则表达搜索。

params:对包含参数(URL 查询字符串,cookies 消息头,或消息体)的请求,这个选项可以把参数分析成名称/值的组合,并且允许你能简单地查看和修改。

headers:这里以名称/值的组合来显示 HTTP 的消息头,并且还以原始的形式显示消息体。

hex:这里允许你直接编辑消息的原始二进制数据。如果在文本编辑器里修改,某些传输类型(例如,使用 MIME 编码的浏览器请求的部分)包含的二进制数据可能被损坏。为了修改这些类型的消息,应使用十六进制。

1.Forward
当你编辑信息之后,发送信息到服务器或浏览器forward:进行请求后被拦截,
点击forward可以继续进行这次请求。点击drop则是丢弃这个请求数据。继续请求后可以看到返回结果。
2.Drop
当你不想要发送这次信息可以点击drop放弃这个拦截信息
3.Interceptionis on/off
这个按钮用来切换和关闭所有拦截。如果按钮显示Interceptionis On,表示请求和响应将被拦截或自动转发根据配置的拦截规则配置代理选项。如果按钮显示Interception is off则显示拦截之后的所有信息将自动转发。
4.Action
说明一个菜单可用的动作行为操作可以有哪些操作功能。


Send to Spider             发送给蜘蛛
Do an active scan          执行主动扫描
Send to Intruder             发送到入侵者
Send to Repeater          发送到中继器
Send to Sequencer       发送到序列发生器
Send to Comparer        发送到比较器
Send to Decoder   发送到解码器
Request in browser       在浏览器的请求
Engagement tools        参与工具


Change request method  对所有的请求,经过把所有相关的请求参数适当地搬迁到这个请求里来,你就可以自动地把请求的方法在 POST 和 GET 中间切换。通过发送恶意的请求使用这个选项来快速测试应用程序的极限参数是多少。


Change body encoding   对于所有的请求,你可以在应用程序/X-WWW 格式的 URL 编码和多重表单/数据之间切换消息体的编码方式。


Copy URL       把当前的 URL 完整地复制到粘贴板上。
Cope as curl command   作为curl命令


Cope to file        这个功能允许你把选择一个文件,并把消息的内容复制到这个文件里。这个对二进制数据来说是很方便的,要是通过粘贴板来复制会带来一些问题。复制操作是在选择的文本上进行的,如果没有被选中的内容,则是针对整个消息了。


Pase form file        这个功能允许你选择一个文件,并把文件里的内容粘贴到消息里。这个对二进制数据来说是很方便的,要是通过粘贴板来复制会带来一些问题。粘贴操作会替换掉被选中的内容,如果没有内容被选中,则在光标位置插入这些内容。


Save item                        这个功能让你指定一个文件,把选中的请求和响应以XML的格式保存到这个文件,这里面包括所有的元数据如:响应的长度,HTTP 的状态码以及 MIME 类型。


Don't intercept requests       通过这些命令可以快速地添加拦截动作的规则来阻止拦截到的消息,这些消息和当前的消息有着相同的特征(如远程主机,资源类型,响应编码)。
Do intercept                           仅对请求有效,这允许你可以对当请求和响应的进行强制拦截。
Convert seiection                 这些功能让你能够以多种方案对选择的文本进行快速的编码和解码。
URL-encode as you type    如果这个选项被打开,你输入的像&和=这样的符号会被等价的 URL编码代替。
Cut                                           剪切
Copy                                       复制
Paste                                       粘贴
Message edit help               消息编辑帮助
Proxy interception help       代理拦截帮助

2.HTTP History

这个选项是来显示所有请求产生的细节,显示的有目标服务器和端口,HTTP 方法,URL,以及请求中是否包含参数或被人工修改,HTTP 的响应状态码,响应字节大小,响应的 MIME类型,请求资源的文件类型,HTML 页面的标题,是否使用 SSL,远程 IP 地址,服务器设置的 cookies,请求的时间。

双击某个请求即可打开详情,通过Previous/next可以快速切换请求,并且Action也可以将请求发送至其他模块。
还可以通过配置过滤器来确定哪些顶层的数据项显示在表格里。有效应用程序包含了大量的内容,如图像,CSS 等,这些有利于从视图上隐藏的。AJAX 应用程序产生大量相似的异步请求,你可能会想把他们从视图上过滤出来来查看一些感兴趣的项。在这个历史记录表的顶部有一个过滤栏。单击会有一个弹出窗口,让你来精准地配置显示哪些内容在表格里
按照请求类型过滤 你可以选择仅显示当前作用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前作用域”时,此作用域需要在Burp Target的Scope选项中进行配置,详细请阅读Burp Target相关章节。

按照MIME类型过滤 你可以控制是否显示服务器端返回的不同的文件类型的消息,比如只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其他文本、图片、Flash、二进制文件 8种形式。

按照服务器返回的HTTP状态码过滤 Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。比如,如果你只想显示返回状态码为200的请求成功消息,则勾选2XX。

按照查找条件过滤 此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你可以选择 1.正则表达式 2.大小写敏感 3.否定查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将不再显示。

按照文件类型过滤 通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅仅显示哪些,另一个是不显示哪些。如果是仅仅显示哪些,在show only的输入框中填写显示的文件类型,同样,如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。

按照注解过滤 此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。

按照监听端口过滤 此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,我们很少用到

3.WebSockets history

这个选项主要用于记录WebSockets的数据包,是HTML5中最强大的通信功能,定义了一个全双工的通信信道,只需Web上的一个 Socket即可进行通信,能减少不必要的网络流量并降低网络延迟。



4.Options

该选项主要用于设置代理监听、请求和响应,拦截反应,匹配和替换,ssl等,其中有八大选项roxy Listeners、Intercept Client Requests、Intercept Server Responses、Intercept WebSockets Messages、Response Modification、Match and replace、SSL Pass Through、Miscellaneous

选项1:Proxy Listeners



代理侦听器是侦听从您的浏览器传入的连接本地HTTP代理服务器。它允许您监视和拦截所有的请求和响应,并且位于BurpProxy的工作流的心脏。默认情况下,Burp默认监听file:///C:/Users/33232/AppData/Roaming/Tencent/QQTempSys/%25W@GJ$ACOF(TYDYECOKVDYB.png12.0.0.1地址,端口8080。要使用这个监听器,你需要配置你的浏览器使用127.0.0.1:8080作为代理服务器。此默认监听器是必需的测试几乎所有的基于浏览器的所有Web应用程序。

1.add:添加一个新的代理地址。

   1.binding:新建一个代理,bind to port-绑定端口号 ,bind to address -绑定ip地址


     2.request hadning:这些设置包括选项来控制是否BurpSuite重定向通过此侦听器接收到的请求:

            2.1.Redirect to host - 如果配置了这个选项,Burp会在每次请求转发到指定的主机,而不必受限于览器所请求的目标。需要注意的是,如果你正使用该选项,则可能需要配置匹配/替换规则重写的主机中的请求,如果服务器中,您重定向请求预期,不同于由浏览器发送一个主机头。

            2.2.Redirect to port - 如果配置了这个选项,Burp会在每次请求转发到指定的端口,而不必受限于浏览
            2.3.Force use of SSL - 如果配置了这个选项,Burp会使用HTTPS在所有向外的连接,即使传入的请求中使用普通的HTTP。您可以使用此选项,在与SSL相关的响应修改选项结合,开展sslstrip般的攻击使用Burp,其中,强制执行HTTPS的应用程序可以降级为普通的HTTP的受害用户的流量在不知不觉中通过BurpProxy代理。



  3.Certificate:这些设置控制呈现给客户端的SSL服务器的SSL证书。

3.1.Generate CA-signed per-host certificate-这是默认选项。安装后,BurpSuite创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用,每次BurpSuite运行。当你的浏览器发出SSL连接到指定的主机,Burp产生该主机,通过CA证书签名的SSL证书。您可以安装BurpSuite的CA证书作为在浏览器中受信任的根,从而使每个主机的证书被接受,没有任何警报。您还可以导出其他工具或Burp的其他实例使用CA证书。

3.2.Generate a CA-signed certificate with a specific hostname---||这类似于前面的选项;然而,Burp会产生一个单一的主机证书与每一个SSL连接使用,使用您指定的主机名。在进行无形的代理时,此选项有时是必要的,因为客户端没有发送连接请求,因此Burp不能确定SSL协议所需的主机名。你也可以安装BurpSuite的CA证书作为受信任的根。

3.3.Use a custom certificate---||-此选项使您可以加载一个特定的证书(在PKCS#12格式)呈现给你的浏览器。如果应用程序使用它需要特定的服务器证书(例如一个给定序列号或证书链)的客户端应该使用这个选项。



2.edit:编辑选中的代理地址。
3.remove:删除选中代理地址。

选项2:Intercept Client Requests

配置拦截规则,设置拦截的匹配规则。 当Intercept request based on the following rules为选中状态时,burpsuite会配置列表中的规则进行拦截或转发。


注意:如果该复选框未选中,那么即使Intercept is on也无法截取数据包。
规则可以通过Enabled列中的复选框选择开启或关闭。
规则可以是域名, IP地址,协议, HTTP方法, URL,文件扩展名,参数,cookie ,头/主体内容,状态代码,MIME类型, HTML页面标题等。
规则按顺序处理,并且使用布尔运算符AND和OR组合。

选项3:Intercept Server Responses

配置拦截规则,设置拦截的匹配规则,不过这个选项是基于服务端拦截,当选小的Intercept request based on the following rules为选中状态时,burpsuite会匹配响应包。

选项4:Intercept WebSockets Messages

选项5:Response Modification

选项6:Match and replace

用于自动替换请求和响应通过代理的部分。对于每一个HTTP消息,已启用的匹配和替换规则依次执行,选择适用的规则进行匹配执行。

规则可以分别被定义为请求和响应,对于消息头和身体,并且还特别为只请求的第一行。每个规则可以指定一个文字字符串或正则表达式来匹配,和一个字符串来替换它。对于邮件头,如果匹配条件,整个头和替换字符串匹配留空,然后头被删除。如果指定一个空的匹配表达式,然后替换字符串将被添加为一个新的头。有可协助常见任务的各种缺省规则 - 这些都是默认为禁用。 匹配多行区域。您可以使用标准的正则表达式语法来匹配邮件正文的多行区域。

选项7:SSL Pass Through



选项8:Miscellaneous



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

19

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2020-5-18 21:16:33 | 显示全部楼层
练习连接数据库

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = new mysqli($servername, $username, $password);

  7. // 检测连接
  8. if ($conn->connect_error) {
  9. die("连接失败: " . $conn->connect_error);
  10. }
  11. echo "连接成功";
  12. ?>
复制代码

  1. <?php
  2. $servername = "localhost";
  3. $username = "username";
  4. $password = "password";

  5. // 创建连接
  6. $conn = mysqli_connect($servername, $username, $password);

  7. // 检测连接
  8. if (!$conn) {
  9.     die("Connection failed: " . mysqli_connect_error());
  10. }
  11. echo "连接成功";
  12. ?>
复制代码
测试PHP的MySQL数据库的连接
使用函数 parse_ini_file() 解析配置文件 config.ini 获得数据库连接参数,用 new 关键字对 mysqli 类进行实例化,再使用函数 mysqli_connect_errno()来判断是否成功连接
  1. try{
  2.     //解析config.ini文件
  3.     $config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini'));
  4.     //对mysqli类进行实例化
  5.     $mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']);   
  6.     if(mysqli_connect_errno()){    //判断是否成功连接上MySQL数据库
  7.         throw new Exception('数据库连接错误!');  //如果连接错误,则抛出异常
  8.     }else{
  9.         echo '数据库连接成功!';   //打印连接成功的提示
  10.     }
  11. }catch (Exception $e){        //捕获异常
  12.     echo $e->getMessage();    //打印异常信息
  13. }
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2020-5-27 05:11 , Processed in 0.013393 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表