正式课学习中常见问题解答分析(待补充中... ...)

Track-子羽   ·   发表于 2023-06-22 17:08:18   ·   问题反馈

0x1. 前言

  1. 本文主要用于解答正式课中,同学们遇到的一些比较常见的问题,对于常见的问题进行了分析解答,如果有不正确的地方请同学们在下方评论指出或者私聊我~~,小王会根据你的建议去做适当的修改^_^
  2. 本文将持续更新,不断补充~~
  3. 本文中所有涉及到的工具以及源码放在文末了哈,不必担心工具源码问题~~
  4. 学习如逆水行舟,希望能够与君共勉~~~

0x1.1 行文结构以及如何快速查找?

  • 行文结构 : 根据正式课的课程体系大纲,对每一节中比较常见的问题作解答分析

  • 快速查找 : 在文章的头部目录中,直接点击相关课程大纲内容或相关问题可快速跳转进行查找

0x1.2 这里放了一张我自己做的脑图,有需要可以自取哦~

脑图制作比较潦草,大佬们轻点喷哈,如果大佬们也有想要分享的内容文字或者脑图或图片,可以联系我呀~

脑图在底部,名为:web安全学习笔记.zip

0x1.3 作业在哪里写,我要写哪些作业?(来来来,点进来,看这里)

1. 作业在哪里写?

1,首先访问我们的社区并登陆:https://bbs.zkaq.cn/

2,登陆以后看到页面的右侧,找到 “作业专版” ,然后点击进去:

3,进去之后可以看到,”作业模板” ,这个东西的作用就是教你怎么写作业的,请一定要浏览一遍:

4,点击”提交作业”:

2. 我怎么知道我要做哪些作业?

1,首先登陆咱们的社区,然后点击右上角的头像,”个人中心”—>”学习计划” ,然后看到“学习计划及进度表”,这里有你在学习正式课所有的作业清单以及完成情况:

同时再次提醒一下,写作业的时候尽量将你的思路,过程,截图都展现出来哈,越详细越好,也可以稍微注意一下作业的排版,尽量做到简洁大方,可阅读性强。

0x1.4 我该从哪里开始学?如何学习?

  1. 直接从正式课的第一节课开始,顺序往下学习即可,课程的学习顺序都是咱们的讲师安排好的,由易到难,由简到繁,所以同学只需要一步一个脚印,从上往下顺序学习即可,学习的过程中,希望同学可以养成做笔记的好习惯(好记性不如烂笔头),同时打靶场的同时,别忘了记录下过程和思路哦~~~
  2. 我建议的学习方法是:把视频完完整整认认真真看完,再进行实践操作,不推荐一边看一边对着做,这样学很容易卡壳的。

0x1.5 课程里面的软件都有提供吗?课件在哪里?

  1. 课程中涉及的ppt,课堂笔记,软件安装包我们都有提供,请同学放心。
  2. 课件可以在QQ群聊中的群文件中找到,以及辅导员给你的网盘,如果没有,可以找辅导员也就是我拿就行,如果有缺失的课件,也可以来找我哦~~~

0x1.6 下载的软件是装在本机还是虚拟机呀?

  1. 关于这个问题,如果同学觉得某个软件不安全,害怕有病毒,可以将软件装在虚拟机里面,如果觉得装在本机也没事,就装在本机,你有完全控制权,你可以自主选择安装在哪里!!!

0x1.7 EverEdit显示:您的试用已过期怎么办?

你看到的肯定是如下界面:

解决方法1: Everedit无限试用

参考大佬的文章:https://bbs.zkaq.cn/t/471.html
设置快捷打开:https://bbs.zkaq.cn/t/2829.html

解决方法2:其他软件替代

OK,这个软件我在网上找了很多的破解方法,发现破解方法都比较复杂(也许是我没看到简单的方法),所以我这里建议你安装其他的编辑器软件比如 notepad++ ,sublime_text(推荐) 等,这些编辑器和 EverEdit其实差不多。

0x1.8 当期结束之后,后面学习完课程还能找辅导员问问题嘛?

  1. 请同学放心,报名了正式课课程,后面你如果还在学习或者复习正式课的课程内容,问辅导员正式课的问题,辅导员在看到后,依然会去给你解答的,如果有时候不是能够及时回复,可能是问问题的学员有点多哈,辅导员在一 一解答,届时希望能够谅解一下哈~ ^_^

0x2 常见问题解答与分析

0x2.0 作业怎么写?markdown语法怎么用?

OK,请宝子们参考这篇文章:文章内容很乱不知道该怎么排版,看这篇就够了(Markdown语法教程)

  1. 建议:在边做靶场的时候希望同学们可以边打开咱们的社区作业专版边记录过程哦,如果是保存在本地文件然后进行复制粘贴的话到时候图片还要重新截图比较麻烦的QAQ

0x2.1 web通信原理

0x2.1.1 虚拟机安装

1. 安装VMware16时弹出需要输入许可证?

在安装课件中的VMware时会弹出输出许可密钥:

可以直接将以下许可密钥输入进去尝试激活:
VMware Workstation Pro 16 激活密钥:

  • ZF3R0-FHED2-M80TY-8QYGC-NPKYF
  • YF390-0HF8P-M81RQ-2DXQE-M2UT6
  • ZF71R-DMX85-08DQY-8YMNC-PPHV8

如果不是VMware版本不是16的宝子也不用担心,直接在百度上搜索:VMware+你的版本+激活密钥 即可

2. VMware以及虚拟机安装需要注意的一些事项?

1,VMware安装时,安装路径最好选择默认路径,不要改动,更不要改动到中文路径下。
默认安装路径一般是C:\Program Files (x86)\VMware\xxx

2,安装虚拟机是同样,虚拟机镜像以及虚拟机的存放路径最好是英文路径,否则容易发生系统错误

3,虚拟机安装在选择客户机操作系统时,需要选择与你安装的操作系统保持一致,比如我现在想安装一个windows server2008 R2 64位,那么我选择版本的时候就需要选择对应版本windows server 2008 r2x64

3. 虚拟机正确安装好以后,一打开虚拟机就蓝屏重启了!?(疑难杂症)

  1. 因每个人的电脑情况都不一样,所以这里只写了几种常用上的解决方法,希望能够帮助到你。
解决办法一(检查VMware版本)
  1. 查看VMware版本,如果版本是VM15.x的版本,请先将VMware卸载,然后重新安装一个VM16.x的版本,如果没有VM16.x的安装包,可以找辅导员也就是我拿 安装VM16需要的许可证在本文的 <安装VMware16时弹出需要输入许可证?> 这一问题中。
解决办法二(检查windows功能)

打开”控制面板”,”程序”—>”启用或关闭windows功能” :

如果看到有 “Hyper-V” 功能且勾选了,则将该项取消勾选,如果没有该项,则默认没有:

然后找到windows虚拟机监控程序平台以及虚拟机平台,将这两项勾选上:

然后点确定来保存设置,保存之后会弹出重启电脑,直接重启就好了。
重启之后再打开VMware运行虚拟机试试。

解决方法三(禁用HV服务)

先尝试前两个办法,这个办法最后尝试;
同时按住 win+R 键,会弹出运行,输入services.msc会打开服务

找到HV服务,“右键”->”属性”->“启动类型”->”禁用”->”确定”:

保险起见,可以尝试将所有Hyper-V服务禁用掉:

然后以管理员身份运行powershell,输入bcdedit /set hypervisorlaunchtype off

然后重启电脑,再打开VMware运行虚拟机试试。

解决办法四
  1. 都看到这了,还等啥,站在门口,大喊一声王妈QAQ,小王火速远程,给你看看到底是什么问题。

4. 正确安装了VM Tools之后,发现往虚拟机拖文件拖不进去,咋办啊?

尝试办法一
  1. 先选中本机的文件右键,选择`复制`,然后到虚拟机里面找个位置右键,选择`粘贴`,如果可以正常复制粘贴,那么虚拟机是可以正常拖文件进去的,可以再多尝试几次。
尝试办法二
  1. 使用远程桌面,来把本地的文件上传到虚拟机上。(windows操作系统为例)

首先需要开启远程桌面,“开始”->”计算机”(或此电脑)->”属性”:

“远程设置”->”仅允许xxxxx”->”确定”,此时默认administrator用户是可以直接远程登录的,可以不用”选择用户”,如果需要使用其他用户登录远程,需要用管理员账号”选择用户”,这里就不赘述了:

设置好以后,在虚拟机中同时按 win+R键,输入cmd打开cmd窗口,输入ipconfig查看当前虚拟机的ip:

将虚拟机ip记下,然后回到本机,按win+R键,输入mstsc打开远程连接,点连接,输入登录虚拟机的账号密码即可:

此时,你从本机直接复制的文件,可以直接通过远程桌面,粘贴到虚拟机当中。

尝试办法三
  1. 可以在虚拟机下载一个QQ,登录QQ,把文件发给自己,然后在虚拟机中进行下载。

5. 虚拟机安装之后,如何保存快照(保存快照是一个好习惯)?

  1. 快照可以简单理解为:将你安装的虚拟机的某一时刻的状态保存下来(备份了那一时刻的所有数据内容),当你想恢复到之前的状态时(比如系统崩溃了),只需要还原快照即可。

查看拍摄的快照:

恢复快照(快照还原):

注意:拍摄快照需要占用磁盘空间,在使用虚拟机拍摄快照时,不需要拍摄很多快照,一般在刚安装时先拍摄一个,后面需要时再拍摄即可。

0x2.1.2 计算机基础命令和概念讲解

1. 什么是ip?

  1. ip就是你的计算机在互联网上的地址,可以理解为你淘宝买东西的时候你写的收货地址.

2. 公网ip和内网ip的区别?

  1. 每个人只要输入公网ip就能找到对应服务器,但是内网ip是路由器通过DHCP协议分配的,只能在相同内网中才能互相访问.

3. 怎么理解域名?

  1. 因为域名更好记忆,以百度为例,你想想,百度的域名baidu.com,假设对应的公网IP123.125.114.144,你访问的时候更记baidu.com 还是123.125.114.144呢。

4.关于web通信原理,学安全要去理解tcp/ip吗?

  1. 不需要,咱们刚开始只需要稍微了解下http协议就行

0x2.1.3 快速自建web安全测试环境

1. phpstudy哪里可以下载?

可以去官网下载,也可以在群里下载;
官网下载网址是:Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn),最新版长下面这个样子:

咱课件提供的phpstudy是2016版本的:

2. phpstudy安装好后,数据库账号密码是多少?

  1. phpstudy默认账号密码是:root root

3. phpmyadmin默认用户名密码是什么?

  1. 默认账号密码是: root root
  2. 当然,如果你自己设置了数据库账号密码,则以你自己设置的账号密码去登录即可

4. 在使用phpstudy时,点击启动发现apache启动不了怎么办?

你所遇到的应该是如下情况:

这种情况一般是由于系统中有一个进程(例如iis)占用了80端口,而apache也需要使用80端口,这就产生了端口冲突问题,此时可以在phpstudy中找到:其他选项菜单 -> 环境端口检测 -> 环境端口检测

然后点击检测端口尝试强制关闭相关进程并启动即可:

5. 怎么使用phpstudy快速搭建web环境,如何快速建站?

  1. 在网上下载CMS源代码(或者使用咱们课件中提供的源代码,没有的宝子可以找我要),将CMS源码放在phpstudyWWW目录下(PS:建议在WWW目录中自己建一个`英文目录`对应搭建的网站,方便自己做站点管理),然后设置好网站根目录,访问安装的文件夹就可以实现快速建站。

这里以dedecms为例,手把手教你如何快速搭建一个站点QAQ
首先,我们将dedecms的源码压缩包放入WWW目录并解压:

解压后,我们来设置一下我们的网站根目录,打开phpstusdy,其他选项菜单 -> 站点域名管理

然后,网站域名第二域名都设置为127.0.0.1(PS: 127.0.0.1表示本地,电脑本身的意思)、端口先不用管,设置网站根目录选择到:uploads目录,就是我们dedecms网站源码所在的目录,然后点击新增以及保存设置并生成配置文件

最后打开浏览器,访问127.0.0.1即可开始网站的安装啦~~ ^_^

0x2.2 网络安全法(讲解)

0x2.2.1 点进来看看,有惊喜~

  1. OK,你还是点进来看了,那么翻到咱们课件PPT第四页,可以默念,可以朗读^_^,学法的目的在于希望同学们可以时刻保持安全意识和法律意识,保护好自己哦~

0x2.3 Web安全前后端基础

0x2.3.1 后端基础PHP———表单验证

1. 表单验证的基本流程是什么?

  1. 在登陆页面提交信息,提交到后端数据库验证,然后返回信息到其他或原有页面.

2. POST提交方式和GET方式有什么区别

  1. GET方式通过url传参,比如:http://xxx.com/?id=1 ;
  2. POST方式则会将传参放到请求包的请求体当中,对于普通用户而言是不可见的,通过抓包软件如burp或者F12进行分析才能看见;
  3. POST方式相对于GET方式传参数量可以多很多;

3. 表单中的target属性有什么作用?

  1. target属性决定表单点击提交后究竟是新打开一个页面还是当前页面跳转

0x2.3.2 渗透测试常用工具讲解

1. 环境变量是什么,设置环境变量的意义?

  1. 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如果我定义了这个环境变量的路径,那么当在windows系统的变量中寻找不到的时候,就会去我添加的路径去寻找对应的东西。
  2. 如果我没有把Python加入环境变量,我在cmd中不能直接运行python,因为在系统路径里面找不到python这个东西,然后加了环境变量,于是乎就会去我添加的路径查找,然后他发现了,有一个东西交python然后调用了。

2. java如何设置环境变量?

教程链接地址:Java 开发环境配置 | 菜鸟教程 (runoob.com)

3. sqlmap最新版获取?

sqlmap官网获取:https://sqlmap.org/ 【推荐】
或者github地址:https://github.com/sqlmapproject/sqlmap

4. sqlmap如何运行起来?

  1. 首先你得安装好python
  2. 然后打开cmd命令行,cdsqlmap所在目录
  3. 然后使用 python sqlmap.py 运行sqlmap

5. sqlmap指令太多了记不住怎么办?

  1. 在这里,主要说一个学习方法就是不要去死记一些命令,无论是sqlmap指令,还是计算机命令、代码等,去背指令没有任何意义,多用,用着用着自然而然就能打出来,指令用到不记得的时候直接去查相关使用手册就行了。
  2. sqlmap手册:https://www.cnblogs.com/hongfei/p/3872156.html

6. SqlMap中探测等级的区别?

  1. 当–level的参数设定为2或者2以上的时候,sqlmap会尝试注入Cookie参数;
  2. 当–level参数设定为3或者3以上的时候,会尝试对User-Angentreferer进行注入。

7. sqlmap如何清除缓存重新测试?

  1. 使用参数: --flush-session,他将会刷新会话,进行测试

8. burp如何配置安装抓浏览器的数据包?

burp安装,激活

这也是很多宝子问的问题,在这里,我写一个保姆级教程吧,希望对宝子们有用~~
注意:本教程的前提是宝子们把java环境安装并配置好环境变量哦

OK,首先,我们直接打开我发的新的burp,解压zip包,双击运行BurpSuiteLoader1.jar

然后会弹出一个页面,点击run后,弹出第二个页面,点I Accept接受用户协议:

然后复制激活密钥,点击NEXT

点击Manual activation选择手动激活模式:

copy request中的代码复制到Activation request,将Activation response中的代码复制到Paste resoponse,勾选上屏蔽跟新和自动运行,然后点Next

然后就可以正常使用burp了,此时我们的burp是默认监听本地的8080端口的:

浏览器安装、使用代理插件Proxy SwitchyOmega、证书安装、BURP抓包?

Proxy SwitchyOmega这款插件是火狐、谷歌、edge浏览器插件市场上都能够搜到的插件,直接在管理扩展的搜索框中输入Proxy SwitchyOmega,然后安装即可:
以下以edge举例安装:

Proxy SwitchyOmega使用:
点击新建情景模式,然后设置一个自己喜欢的名字,点击创建

按照序号的顺序依次设置:

  • 代理协议选择HTTP
  • 代理服务器设置127.0.0.1,即代理自己电脑的意思
  • 代理端口设置为8080 ,即代理自己电脑上的8080端口
  • 将不代理地址列表中默认的值全都删除
  • 点击应用选项保存代理设置

OK,到这里我们设置了一个名叫burp_test的代理,代理的是本地的8080端口,代理的流量协议为http/https,那么我们只是设置好了代理,要如何使用呢,且先看下文:
我们先访问www.baidu.com,在没有开代理的情况下,是可以正常访问的:

此时,我们尝试去抓百度的包,首先在扩展图标点击一下,将我们的Proxy SwitchyOmega显示出来(默认是收起来的)点击小眼睛

接下来设置让浏览器只代理百度这个域名的数据包(如果要抓其他域名或者IP的包也同样做如下设置即可,这也是该插件的优点,可以让你只抓某个IP或域名的包,方便你分析数据包,减少其他数据包的干扰):

设置完成后我们发现访问百度失败了,这是因为浏览器没有安装burp的证书导致的:

接下来,我们安装burp的证书:
浏览器访问127.0.0.1:8080,点击CA Certificate下载burp的证书:

下载下来后文件名为cacert.der,这里,有一个小细节,如果你用的是edge浏览器,你需要将证书的后缀改为.cer,其他浏览器不需要改;

然后在edge的设置中,搜索证书

打开证书管理页面,然后点击导入-> 下一步 -> 浏览选择刚刚下载的burp证书:

然后证书被分入下列存储选择受信任的根证书颁发机构

完成后弹出安全警告,选择,即可导入成功:

此时我们再次抓百度的包,发现仍然报隐私错误,因为系统还需要安装一遍burp的证书,因此,我们直接找到我们下载的证书,直接双击:
安装证书 -> 当前用户 -> 下一步

选择存储位置为受信任根证书颁发机构,然后导入成功:

接下来再次访问百度抓包,此时能够正常加载出百度首页,burp也能够正常抓到包:

注意:如果安装系统证书和浏览器证书后抓百度的包仍然报"隐私错误",可以重启一下虚拟机或者电脑试试哦~

9. 为什么要设置代理才能抓到数据包、burp是怎么抓到包的?

  1. 浏览器和服务器是直接通信的,而我们增加了代理,就把直接发送到服务器的数据发送到你设置的代理的端口。
  2. Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。
  3. Burp Suite主要拦截httphttps协议的流量,通过拦截,burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的

以下以图的方式来理解代理(或者说burp抓包):

在没有设置代理的情况下,一个用户使用浏览器发起请求的流程如下:

当挂上了代理软件或者说代理服务器时,一个用户使用浏览器发起请求的流程如下:

10. 设置代理监听的8080端口,能改成别的端口吗?

  1. burp上默认的端口就是8080,我们可以修改,在proxy模块option处,点击设置的端口,然后点击edit,就可以修改了,但记住一些常见的端口比如3389远程桌面这种系统使用的端口就不要使用啦,不然容易产生端口冲突问题QAQ

0x2.4 信息搜集

0x2.4.1 信息搜集的意义—渗透测试的灵魂

1. 如何查看网站cms

  1. F12查看网页源代码,可能在页面源代码里
  2. 或者用指纹识别的平台查找,例如:云溪指纹 https://www.yunsee.cn/
  3. 通过特殊的页面查看CMS信息,比如有些CMS会在robots.txt中写明CMS的名字和版本

2. 什么是旁站,什么是C段,它俩的区别是什么?

  1. 旁站是指同ip(或者说同服务器下的)的不同网站
  2. C段是指公网Ip同一网段下的网站

3. 目录扫描用什么工具?

  1. 御剑、7KBdirsearch等这些都是优秀的目录扫描工具,其中dirsearch需要python环境支持哦~

4. 端口探测用什么工具?

  1. 目前主流是:Nmap,也有一些小众轻量化的扫描工具如:portscan

5. 如何识别页面是否伪静态?

  1. 控制台输入 javascript:alert(document.lastModified),如果网站是个html,但是显示的却是现在的时间,就是伪静态页面

0x2.4.2 信息收集实战 1 & 2

1. 信息收集脑图

0x2.5 注入——全方位利用

0x2.5.1 SQL注入的原理分析

1. sql注入本质是什么

  1. 把用户的输入当做SQL语句执行。

2. 数据库管理工具Navicat安装、与破解激活教程?

  1. navicat是一款数据库管理工具,使用它我们可以清晰的看到数据库中的数据结构以及数据,能够很方便的进行查找以及数据管理。

安装与激活教程:
跟着下面这个篇文章一步步走,亲测有效~~~
这里只需要注意一点,在博客里面下载navicat12,下载安装好后,先不要启动navicat12哦~,其他按照博客中的教程走即可
https://www.cnblogs.com/wei9593/p/11907307.html

3. order by的作用及含义?

  1. order by 用于判断字段数,order by 原有的作用是对字段进行一个排序,在sql注入中用order by 来判断排序,order by 1就是对一个字段进行排序,如果一共四个字段,你order by 5 数据库不知道怎么排序,于是乎就错误了无返回值。

4. 闭合是什么?

  1. sql查询中,代码比较严谨,括号和引号都得成双成对,引号内的默认是字符串不会当作SQL语句执行,所以必须闭合然后才能注入,当然有些SQL语句直接拼接,也就不用什么闭合了。

5. union all 和 union 区别?

如果输出的数据有相同的,union只会输出一次,而union all都会输出。

6. 为什么用and 1=1正常 and 1=2报错来判断是否存在SQL注入?

  1. 因为如果存在SQL注入,那么and就是 的意思,1=1是一个恒等式,然后因为原本能够查出数据,那么两个真就是True,但是1=2肯定是不可能的,这里就会返回一个False,然后因为 必须两个真才返回True,所以这里拼接就不成立返回False

7. 除了 and 1=1、and1=2,可以用 or 1=1 、or 1=2 吗?

  1. 可以,在常规的渗透测试中,建议都去尝试一下,根据不同的情况,去选择用 and 还是用 or

8. 注入语句最后的 --是什么意思?为什么 -- 后面要加个 qwe?

  1. -- 减减空格在数据库中表示“注释”的意思,在SQL注入的时候使用 -- qwe用于注释掉后面的SQL语句,使我们构造的SQL语句能够正常执行。
  2. qwe,首先qwe是我们随便打的字符,也可以写aaa,其作用主要是

0x2.5.2 POST注入/HEAD注入

1. POST注入如何注入?

  1. post注入其实很简单,就是在POST传参的地方做注入,和前面课程《SQL注入的原理分析》中讲到的注入流程是一样的,只不过注入点在POST传参这个地方,就像同一个东西,只是放的位置不同。

2. post注入会出现在哪里?

  1. 比较常见的是:登录框,搜索框,还有一些其实是在抓包的时候,如果看到POST数据包中有可疑参数可能存在注入,也可以去尝试看看,本质就在于"试"嘛。

3. 万能密码原理?

  1. select username,password from users where username='admin' and password = ' 'or 1=1 -- qwe' limit 0,1
  2. (我们来看语句逻辑,where后面是条件,username和password之间是and连接,所以两个有一个为否返回就是否,但是or 1=1,这个返回真,否 or 真=真 ,-- qwe是注释,将后面的SQL语句注释掉,防止SQL语句受到干扰。)

4. head头注入原理?

  1. 简单理解:在请求数据包头部(HEAD)字段做注入。

5. POST注入用 SQLMAP 怎么测试?

POST可以通过-r参数指定数据包也可以使用--data去跑:

  • 首先,使用burp抓post数据包,然后在注入点打上*号标记,将数据包保存为 1.txt;
    1. python sqlmap.py -r post数据包文件名
  • python sqlmap.py -u url --data post数据

6. HEAD注入用 SQLMAP 怎么测试?

有两种方式:

  • 第一种就是和post注入一样,抓包,然后在注入点上打上*标记
  • 第二种:加上参数 --level 3 将检测等级提高

7. POST和GET传参方式都会进行编码吗?

  1. GET传参会进行URL编码,POST传参一般不会进行编码

8. POST传参和GET传参有什么区别?(可以记一记,有的时候简单面试会问到)

  • 1,GET传参在URL中传参,POST传参在请求数据包的请求体中
  • 2,GET传参一般长度限制为2048字节,POST传参长度一般无限制

0x2.5.3 宽字节注入

1. 为什么在注入的时候使用的查询表名要用16进制进行编码?

  1. 因为表名要用到单引号括起来,但是会被转义,单引号会被加上反斜杠对查询产生影响,所以可以使用16进制进行编码处理,16进制到了数据库中会被自动转换成字符串, 注意:16进制需要手动在前面加上 0x

2. 除了使用16进制编码绕过外还有什么方法吗?

  1. 有,可以使用嵌套子查询,比如:
  2. 'admin' 表名 可以使用以下语句来代替
  3. (select table_name from information_schema.tables where table_schema=database() limit 0,1)

3. 如何开启魔术引号?

在php的配置文件php.ini中,找到magic_quotes_gpc ,如果为on就是开启,为off就是关闭。

4. 宽字节只发生在GBK编码上面吗?

  1. 并不是的,只要PHP的编码格式和数据库的编码格式不同,特别是字符不同的编码就可能会造成。

5. 魔术引号默认开启吗?

魔术引号默认是开启的,但是在高版本中php5.4.0以后被移除。

0x2.5.4 盲注

1. 盲注中的substr()怎么用?

  1. substr()的功能是截取某个字符串的一部分。
  2. substr(要截取的字符串,从哪个位置开始截取,截取多少位)
  3. 例如:substr('adminadmin',1,3) --> 'adm'

2. 布尔盲注的原理,如何理解布尔盲注?

  1. SQL语句在数据库中执行有结果的时候,返回正确的页面(这个正确的页面可以是页面上有数据,页面显示正常等),当SQL语句在数据库中执行无结果的时候,返回错误的页面(例如返回的是空白页,或者页面上显示有错误等),而我们就是通过页面的两种不同显示状态,来做注入,这就叫布尔盲注。

3. 布尔盲注和延时盲注有什么区别?

一个根据返回页面的正常与否,一个根据页面响应时间判断,之前的语句是相同的,只是延时增加了if()判断和延时函数sleep()。

4. if()判断如何使用?

  1. 食用方法:
  2. if(exp1,exp2,exp3)
  3. 解释:如果exp1执行成功,那么返回exp2,如果失败,返回exp3

0x2.6 数据库注入

  1. cookie注入简单理解就是:在请求数据包中的请求头部,Cookie字段这个地方做注入,其他流程都是一样的,只不过注入的位置不一样。

cookie注入做注入有两种方法:

  • 使用burp抓包,修改请求数据包的cookie字段
  • 使用浏览器的控制台,document.cookie=xxx,然后刷新页面。

OK,同学,你是不是这种情况:

如果是这种情况的话,是注入不了的,因为你在GET传参中有id=171,而cookie中传参id=171 and 1=2 ,而当前这个网站后端代码是GET和POST传参优先的,如果你GET和COOKIE传相同的参数过去,当前这个站点会先取GET传参,因此,在对这个网站做注入的时候,需要把GET中的传参删除

3. 有没有好用的编码工具或者在线网站?

在线网站:

0x2.6.2 Access—偏移注入

1. 偏移注入的flag在哪里?

  1. 如果你偏移注入成功了,可以F12查看一下源代码哦~

0x2.6.3 MySQL注入—Dns注入

1. dnslog平台接收不到DNS注入外带的数据?

  1. dnslog.cn这个平台可能比较卡,需要等一会,可以多打几次,多刷新几次看看
  2. 一个dnslog平台是:dnslog.cn
  3. 另外推荐一个dnslog平台:http://dnslog.pw/login 可以不用注册,使用"创建随机ID并登录"的方式去登录。

2. DNS注入原理?

  1. 通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录,此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志。

3. load_file函数的作用?

  1. load_file函数主要用于读取文件并返回输出。

4. DNS注入可以用在Linux的机器上面吗?

不可以,因为这里其实依靠的是UNC,只有Windows有这个。

0x2.6.4 MSSQL注入—反弹注入

1. 反弹注入使用到的外部连接数据库在哪里有?(看这里,不需要自己去注册的!!!)

  1. 靶场提供的数据库地址(两个):
  2. 地址:den1.mssql8.gear.host
  3. 初始化库:zkaqzkaq1n
  4. 账户名:zkaqzkaq1n
  5. 密码:Rz7VjmvQ!6e~
  6. 连接地址:SQL5095.site4now.net
  7. 库名: DB_14DC259_a94
  8. 用户名:DB_14DC259_a94_admin
  9. 密码:nsqvcf96310

2. 反弹注入需要什么条件?

需要配合堆叠注入,因为要执行insert into语句。

3. 在MSSQL中为什么不能直接查询表里的字段?

因为在MSSQL中,要使用表名结合表对应的id来查表里的字段,因为MSSQL中表名和id是绑定的。

4. MSSQL中常用的语句?

  1. 查用户建立的数据表
  2. select name,id from dbo.sysobjects where xtype="U";
  3. 查询字段名
  4. select name,id from dbo.syscolumns where id=244668;
  5. 查询当前库名
  6. select db_name();

0x2.6.5 Oracle注入—报错注入

1. Oracle系统表有哪些?

  1. 主要记以下几个表:
  2. DBA_TABLES 表示DBA拥有或可以访问的所有的表
  3. ALL_TABLES 表示某一个用户拥有或可以访问的所有的表
  4. USER_TABLES 表示某一个用户拥有的关系表
  5. 所需权限:DBA_TABLES > ALL_TABLES >= USER_TABLES

2. Oracle 使用查询语句获取数据时要注意什么?

Oracle使用查询语句时,必须符合查询语法规范,也就是说必须满足:select username from admin 这种样式,如果没有表的情况下,需要使用 dual虚表来符合语法规则:select username from dual 。

3. Oracle 是否需要大小写问题?

Oracle查询字段时不区分大小写,但查询数据时需要区分大小写。

4. Oracle常用的一些语句有哪些?

  1. 查所有的表
  2. select * from all_tables;
  3. 查当前用户的表
  4. select * from user_tables;
  5. 查所有的字段
  6. selet * from all_tab_columns;
  7. 查当前用户的字段
  8. select * from user_tab_columns;
  9. 查版本
  10. select * from v$version;

0x2.6.6 SQLmap绕WAF脚本编写

1. 课程或这哪搞sqlmap绕WAF那张脑图?

0x2.7 前端渗透测试

0x2.7.1 XSS的原理分析与解剖

1. XSS的本质(原理)?

  1. 将用户的输入当做前端代码执行。

2. 反射型常见的三种触发方法?

  1. 标签法:<script>alert(1)</sctipt>
  2. 事件触发:<img src="xxx" onerror=alert(1)/>
  3. 伪协议:<a href=javascript:alert(1)>123</a>

3. XSS在什么地方可以插入?

  1. 见框就插

0x2.7.2 存储型XSS

1. 存储型xss也可以通过弹窗来验证吗?

  1. 可以,但是不建议,因为存储型XSS如果弹窗造成的影响会比较大,比如你在评论区发现一个存储型XSS,然后你插入了一个弹窗代码,那么所有浏览此评论的用户都会被弹窗。

2. 存储型xss可能出现在哪些位置呢?

  1. 可以插入数据的地方,比如用户注册,留言板,上传文件的文件名处,管理员可见的报错信息(会记录错误日志的地方)等。
  1. 简单理解:xss平台的代码写好了有读取别人cookie的功能,并且能够将读取到的cookie发送到xss平台,因此你在URL中添加了XSS代码,别人点击,XSS平台就能看到他的cookie
  1. xss平台推荐使用:xsscom.com
  2. 来自20期同学推荐的一个XSS平台:https://xssaq.com/ ,感谢大佬的提议
  3. 还有别的平台:xss8.cc xss.pt

第二,靶场提交那个地方,手机号和姓名是需要填的,填了后台机器人才会给你点击链接哟(又是一个小细节)。

5. xss平台搭建教程(仅用于技术教学)

有的同学可能对xss平台比较感兴趣,这里我写了一个xss-platform的搭建过程,感兴趣的话可以自己在虚拟机上搭建玩一玩哈;
不推荐搭建在公网上,如果非要搭建,请将注册功能删除掉,以及将登录的账号密码设复杂一些。

环境准备
  1. xss平台源码:https://github.com/78778443/xssplatform
  2. windows操作系统
  3. phpstudy快速建站软件:https://www.xp.cn/
  4. 教程步骤来自于这位大佬的博客:https://icepeak.icu/2021/03/03/da-jian-xss-ping-tai/#toc-heading-2, 在此向大佬致谢
搭建过程

将XSS平台源码解压到phpstudy的网站根目录:

修改源码中的配置文件config.php:

  1. 'dbHost' => '127.0.0.1', # 主机地址,如果是本机搭建,就填本机ip
  2. 'dbUser' => 'root', # 数据库用户名
  3. 'dbPwd' => 'root', # 数据库密码
  4. 'database' => 'xssplatform', # xss平台的数据库,默认是 xssplatform
  5. 'urlroot' => 'http://127.0.0.1', # url根路径,如果是本机搭建,就填本机ip
  6. 'urlrewrite' => false, # 默认就行
  7. 'filepath' => 'D:/phpstudy_pro/WWW/xssplatform-master/xssplatform-master/upload', # 改为 "xss源码的路径地址/upload"
  8. 'fileprefix' => 'http://127.0.0.1/upload', # http://主机ip/upload

保存配置后,将网站根目录指向xss平台源码所在的目录:

将XSS平台自身的数据库导入我们本地的数据库:
进入phpstudy的mysql命令行(根据自己电脑phpstudy的安装路径去找,我的路径是D:\phpstudy_pro\Extensions\MySQL5.7.26\bin),在文件栏输入cmd进入命令行,然后输入mysql -uroot -p数据库密码:

创建一个数据库:create database xssplatform;
进入数据库:use xssplatform;
导入xss平台数据库文件:source xss平台数据库文件命令(将sql文件拖进命令行即可)

修改数据库域名:update oc_module set code=replace(code,'http://xsser.me','配置文件中设置的URL根路径')

设置伪静态: xss平台源码目录中,有一个安装说明,复制apache方式下的内容:

然后在phpstudy中,打开伪静态页面设置:管理 -> 修改 -> 伪静态,将复制的内容粘贴进框里,然后点 确定

接下来,浏览器访问http://127.0.0.1 ,搭建成功~, 注册个用户进去玩一玩:

在本地写一段含有XSS漏洞的php代码:

然后进入xss平台,获取xss攻击代码,使用攻击代码对我们的测试页面进行攻击:

至此,说明我们的xss平台搭建并且能够运用了。

0x2.7.3 Dom Based XSS

1. DOM型XSS究竟是持久型还是非持久型,怎么理解?

  1. 既有持久也有非持久,DOM型最简单的理解方法就是通过网页自带JS操作后造成的XSS,例如本身可能有HTML实体编码,结果我们输出点因为JS会进行解码,然后我们打了编码过的字符串,绕过了HTML实体编码造成的XSS就属于DOM型。

2. 为什么靶场可以用native编码来绕waf?

  1. 因为document.write()它可以接受native编码,它会对经过native编码的字符串进行自动解码。

3. 为什么不建议用谷歌浏览器做dom-xss?

  1. 新版Chrome针对script context类型的domxss做了检测拦截

4. 可能触发DOM型XSS的属性有哪些?

  1. document.referer
  2. window.name
  3. location
  4. innerHTML
  5. documen.write

0x2.7.4 跨站请求伪造 - CSRF

1. CSRF脑图?

同时,底部有这个脑图的压缩包,有需要的同学可以直接到底部下载哈:

2. CSRF的攻击流程?

  1. 用户 A 在登录 D 站以后,收到了攻击者 C 发来的不明链接,用户 A 点击链接,被攻击者 C 利用用户 A 在浏览器登录 D 站时的cookie,在D站上进行一些非用户A本意的操作,比如偷偷转账、创建或删除用户、文件等,注意,这里攻击者 C 并没有直接获得用户 A cookie,而是利用用户 A 的浏览器进行的操作。

3. CSRF靶场上传了CSRF文件,在问题反馈页面点击提交之后,并没有创建文件?

同学是不是在这个页面,填写好了文件路径提交之后,发现并没有创建新的php文件:

这里有个需要注意的点就是姓名手机号是需要正常填写的,这样后台才会去点击你提交的链接哦:

如果正常填写了还是不行,那么同学可以检查一下你的CSRF文件,要注意将后台的地址更改为咱们CSRF靶场的地址,以及上传的路径是 /uploads也就是经过实体编码后的&#47;uploads

其次,上传的文件名可以稍微奇怪一些,因为靶场是有很多人同时在做滴,如果你上传一个比如1.html 、2.html ,很可能就会产生文件覆盖的问题哦,可以把文件命名成funnnytest8.html这种奇怪一点的名字(当然不要太奇怪QAQ)

4. CSRF与SSRF的区别?

  1. CSRF(跨站请求伪造),CSRF主要是让客户端的浏览器去访问目标站点执行一些操作。
  2. SSRF(服务端请求伪造),SSRF主要是让服务器去发起访问,目标主要是服务器所在的内网环境。

5. CSRF与XSS的区别?

  1. CSRF主要是借用目标的cookie来完成一些操作,而无法直接获取目标的cookie
  2. XSS主要是利用恶意代码去获取目标的cookie,盗取。

6. CSRF图解

0x2.7.5 验证码绕过、密码找回漏洞

用户名金币积分时间理由
小玫瑰 1.60 0 2023-07-10 22:10:52 一个受益终生的帖子~~
小玫瑰 1.60 0 2023-07-10 22:10:49 一个受益终生的帖子~~

打赏我,让我更有动力~

附件列表

信息收集脑图.zip   文件大小:0.742M (下载次数:7)

dedecms.zip   文件大小:8.647M (下载次数:3)

sqlmap-master.zip   文件大小:7.18M (下载次数:1)

web学习笔记.zip   文件大小:5.935M (下载次数:2)

xssplatform-master.zip   文件大小:0.709M (下载次数:3)

CSRF 跨站请求伪造.zip   文件大小:0.949M (下载次数:1)

0 条回复   |  直到 10个月前 | 1888 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.