渗透原理篇
文章平均质量分 60
一些基本的手法
不习惯有你
一个喜欢渗透的小伙子,正在成为大佬的路上
展开
-
JSONP劫持
主要区别就是 JSONP 只能发起 get 请求,而 CORS 可以发起任何请求。简单的说就是利用标签来拿到A用户在其他网站的信息(json)。面试问题:CSRF的两种方法中,CORS和JSONP的区别?JSONP出现是为了解决还没有出现同源策略而出现的,是使用。来实现的当然还可以使用其他的方法。接下来我们来介绍JSONP。首先我们提前了解下JSONP。原创 2023-03-11 11:05:24 · 427 阅读 · 0 评论 -
bypass绕WAF
eval(mysqli_fetch_assoc(mysqli_query(mysql_connect('127.0.0.1','root','root','hjw123'),'select * from info'))['info']) //键为info的地方。一、echo "原创 2022-10-28 11:22:05 · 1344 阅读 · 0 评论 -
App测试基础内容
使用XP框架的JustTrustMe来进行绕过,自动化检测是否存在单向认证,如果有直接帮你hook掉【帮你卡住,让app不进入检测证书的环节,看apk客户端测试】解包app,改代码,捞里面的合法证书来伪装。1、证书校验(其实就是https,我们用burp的证书就可以绕过)app -> burp [burp的证书] -> 目标通信 [正常的证书]burp生成一本和app内置证书一样的证书 [工具]app会检测和我通信的人证书是否合法 [内置一本证书]证书的核心:让app用burp的证书进行通行。原创 2022-10-22 14:03:55 · 812 阅读 · 0 评论 -
渗透测试神器-CobaltStrike
3、双击start.bat,设置账户名密码进入(这里加载了一个汉化包 -javaagent:CobaltStrikeCN.jar)cs基于java环境写好的,所以先安装jdk,在安装的时候关闭掉杀毒软件(建议在虚拟机里安装)把恶意代码植入到正常的程序中,只有将正常的程序关掉才能杀掉这恶意代码。4、设置会话时间,默认的是一分钟一个,我们设置一秒一个包。CS拿到A主机的权限,你的成员都可以去控制A主机。2、客户端加载(和服务端无关,仅限于客户端)2、做成服务,服务是开机自启的。1、cmd进入到cs的目录下。原创 2022-10-20 18:36:13 · 2755 阅读 · 1 评论 -
命令执行漏洞
2、反弹shell [把自己的cmd操作权限给别人]别人可以远程控制你的cmd/bash。自动输出、且多行执行【&url编码%26】,传参的时候传入的数据是否会被曲解。在php中是shell_exec的简写,手动输出echo(`whoami`)命令执行:用户输入的数据当做系统命令执行[cmd命令 shell/bash命令]代码执行的时候可以通过调用命令执行的函数来达到命令执行的效果。命令执行也可以写文件得到一句话木马,来达到代码执行的效果。手动输出,需要echo输出,只能输出单行。原创 2022-10-15 22:49:02 · 927 阅读 · 0 评论 -
支付漏洞基础
用户[传参] -> 商家 -> 第三方平台 -> 商家 -> 用户。1.大部分的商户(支付宝、微信、银联)越权支付:用别人的钱包支付自己的商品。3.数据包中的加密是由前端决定。跳过支付环节:依靠浏览器跳转。商品和钱的传参应该要校验。支付漏洞属于逻辑漏洞。原创 2022-10-14 15:13:26 · 942 阅读 · 0 评论 -
Unserialize反序列化
申明:一般情况下不会去挖反序列化漏洞,因为太繁琐,而且只能白盒测试。魔术方法,满足条件执行,无需调用,一般是以下滑线开头。魔术方法:满足条件执行xxxx代码。类:class[实现某种功能的东西的集合]事件:满足条件触发xxxx。序列化 - 类 正常情况下是在一起的。序列化:存档(记录下现在的状态)反序列化:读档(还原存档的状态)"chybeta":表示对象名。序列化、反序列化都要跟类一起的。test:表示名为test。123:表示值为123。原创 2022-10-13 18:00:38 · 477 阅读 · 0 评论 -
变量覆盖漏洞
当你拿着A.COOKIE访问网站的时候,如果开启了SESSION并且赋值的话,网站的本地会存放到一个文件,这个文件代表了COOKIE和SESSION的绑定。*.func.php 基本上会被疯狂调用,基层文件,里面是网站的基础逻辑,而且前台后台通用。相同代码的网站SESSION的权限身份校验是相同的。2.我们造的变量会在接下来的代码里面起奇效。把数组变成变量,把数组中的键变成变量名,把值变成变量值。前面中存在相同的变量,从而后面的变量将前面的变量造成覆盖。变量覆盖的危害:取决于具体的代码。原创 2022-10-09 16:06:28 · 437 阅读 · 0 评论 -
本地包含与远程包含
include包含文件是不管文件后缀的,只读取内容,读取出来的东西都会当做php或者html代码执行。文件包含可以包含任意后缀的东西当做php执行,找到一个文件包含漏洞,上传图片马,这样就可以拿到了webshell。后台的所有的文件,是不是都必须要检测当前用户是不是管理员,可以直接文件包含判断。cmd也会偷懒,进入一个文件夹再退出,其实不会真的去执行进入,也不会报错,哪怕文件夹不存在。知识点:远程文件包含默认不开启,它需要修改配置才可以。文件包含:就是去其他的php文件读取源码来运行,调用。原创 2022-10-07 23:00:02 · 890 阅读 · 0 评论 -
代码执行漏洞
echo 1)) //eval代指多行执行的函数。') //匿名函数。程序员偷懒用的,有一些函数临时用一用,开发名字都懒得写,而且为了精简代码,他们用匿名函数。2.file_put_contents() //写一个php文件。回调函数,调用某个函数,不止一个回调函数。在abc中匹配a如果匹配到了执行中间的函数,需要匹配到。eval是代码执行用的最多的,他可以。RCE(远程命令或者代码执行)原创 2022-10-06 17:02:15 · 1551 阅读 · 0 评论 -
逻辑漏洞基础内容
防御方法:提交过一次验证码错误后,要求必须重新发送验证码、验证码就变。发验证码 -> 修改页面(cookie就和账号绑定)有一类验证码是证明身份 - 短信验证码、邮箱验证码。发验证码 -> 校验页面 -> 修改页面。4位数字 => 穷举、爆破。验证码:4数字、6数字[6位以上、有字母的]找回密码(1、校验部分 2、修改部分)某些验证码它不再是区分人类还是计算机。跑验证码 4位6位验证码。发送验证码为什么要写检测是人还是脚本的验证码。验证码:全自动区分计算机和人类的图灵测试。原创 2022-10-05 21:36:41 · 550 阅读 · 0 评论 -
XXE - 实体注入
只是一个名字而已。XML像HTML、传输数据、无预定义(预先定义好的东西)原创 2022-10-04 13:19:23 · 554 阅读 · 0 评论 -
SSRF - 服务器端请求伪造
url= dict://192.168.199.129:80 探测内网机器端口,返回出其他主机端口信息。url= dict://127.0.0.1:80 探测本机端口,会返回出端口的一些信息。url= file:D:/桌面/计划安排.txt 读取本地计划安排.txt里的内容。3.攻击目标本机(dict:// 探测端口、file:// 协议读取文件)DNSlog:要有外网(无外网的内网机器可以上所有的内网地址强行扫描)项目上:能发起请求应该就属于漏洞(网站功能除外)原创 2022-10-03 13:18:55 · 583 阅读 · 0 评论 -
越权漏洞知识点
你是一个低权限用户,但是可以进行高权限操作。或者平级操作(用户A->用户B,用户A->管理员)(网站、网页、app)指的是你是低权限用户,通过技术手段提升到高权限(指的是计算机权限 用户权限->管理员权限)抓包传参可在浏览器、app、应用程序(exe)水平越权:同权限账户可以互相影响(A、B)垂直越权:不同权限的账户可以互相影响。交叉权限:即可以垂直又可以水平。1.通过修改GET传参来越权。2.修改POST传参进行越权。3.修改cookie进行越权。原创 2022-10-01 11:54:41 · 598 阅读 · 0 评论 -
验证码绕过、密码找回漏洞
默认情况下:cookie是真的随机值,你随便写写什么都行,但要符合cookie的位数。cookie代表你的身份 => 它绑定了session。session会话 => 存在服务器上的。2.逻辑绕过:开发写这个验证码校验的时候逻辑产生了问题。抓包,数据包里面根根没有验证码的传参。内网系统、纯ip站点、校验服务有问题。在请求传参中有个空值验证码的参数。验证码:一种区分用户是计算机还是人的全自动程序。看传参中出现几次验证码中的值。验证码绕过、密码找回漏洞 逻辑漏洞。将验证码的传参参数删掉。原创 2022-09-30 17:40:54 · 991 阅读 · 0 评论 -
文件上传漏洞 解析、验证、伪造(三)
别名(phtml)、点、空格、NTFS文件流(::$DATA)、.htaccess(化学反应)、构造绕过(白盒)、双写绕过(强行替换删除)、大小写绕过。00截断(某些动态语言版本的函数存在00截断)、条件竞争(先上车、先买票)2.无法提交shell但是可以提交其他的文件,例如HTML(上传存储型xss)不同用户可能权限不同,防御也有肯能不同,也能存在不一样的漏洞。当做结束,遇到/当做结束,交给asp处理。读取文件的时候,把test.asp当做文件夹。1.文件上传是个功能,任意文件上传(漏洞)原创 2022-09-29 17:19:17 · 705 阅读 · 0 评论 -
文件上传漏洞 解析、验证、伪造(二)
a=123#abcd -------锚点------> a.php?00截断原理是,move_upload_file碰到%00就给当结束,将内容都移到了00截断前的位置中。检测的是上传的问题,但是如果你上传的文件,它写了一个木马,它是不会被检测的。使用16进制修改,00截断和%00截断都是一样的,知识传参方式的不一样。前四行是gif运动的规律,第一行是gif的标识,将码插到二三四行中。图片码的方法可以藏文件,而且比NTFS文件流厉害的多。检测需要时间,如果你上传的够快,可以在删除之前访问到。原创 2022-09-28 23:44:30 · 318 阅读 · 0 评论 -
文件上传漏洞 解析、验证、伪造(一)
通过设置web容器规则,文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态、禁止特定IP地址的用户,禁止目录列表。echo 123>a.txt:b.txt 则123写到了b.txt中,且文件夹中无法找到b.txt。非法网站 -> 大型互联网 -> 小型互联网 -> 大型实体 -> 小型实体 -> 托管式网站。文件实际是以::$DATA结束的 1.txt::$DATA。前端:html、css、js(利用前端来校验,你的浏览器上运行的)原创 2022-09-27 17:16:52 · 570 阅读 · 0 评论 -
跨站请求伪造 - CSRF
Token是唯一解:cookie里面有一段随机值,和请求包里面的GET或者POST传参有一个关联。2.任何用户的数据包构成都是相同的 [修改电子邮箱]找个网站,登录A用户,修改自己的账号密码。在你不知情的情况下,浏览器偷偷发送数据包(ajax异步传输) -> 信任。2.浏览器CORS的问题,不同的网站发送JS请求他会主动拦截删除Cookie。换一个浏览器,登录B,点击做好的CSRF,只要能修改就是了。任何网站(互联网)的功能本质是数据包的传递。Cookie:你的身份,你的权限。原创 2022-09-26 21:11:19 · 277 阅读 · 0 评论 -
Dom Based XSS
alert("xss")document.write 向文档中写html或者js代码 【Dom xss常见的存在方式】浏览器对于明目张胆的xss会有拦截,尽量不要alert(1)原创 2022-09-25 23:22:40 · 217 阅读 · 0 评论 -
存储型XSS
https和http的区别:1、https的端口是443,而http的端口是80,且两者的连接方式不同;2、http传输是明文的,而https是用ssl进行加密的,https的安全性更高;测试存在XSS漏洞 -> 打入XSS平台攻击代码 -> 诱导目标访问 -> XSS平台获取到Cookie -> 利用Cookie登录目标。先去网上查找相关的历史漏洞,若历史漏洞还存在那很好,直接可以利用,若不存在,我们可以再继续寻找挖掘漏洞。XSS打崩不是真正意义上的崩溃,实际上是前端代码的闭合问题。原创 2022-09-24 14:45:44 · 242 阅读 · 0 评论 -
XSS的原理分析与解剖
a herf='Javascript:alert(1)'>abc 伪协议http:// ftp:// 有跳转的地方都可以触发。 事件型(事件 满足条件自动触发的东西)XSS => 见框就插入 (有输入,有输出) 你能插入数据,并且你的数据得能输出。XSS => 读取浏览器存储的Cookie => 把读取到的Cookie发送给攻击者。你得有输入的地方,并且你的输入会被输出。原创 2022-09-23 23:46:53 · 278 阅读 · 0 评论 -
Oracle注入 — 报错注入
去查询关于主题的对应关键词,然后因为查询失败(应该是这个用户没有创建和查询的权限,默认情况没有创建,爆出为查询到的错误而爆出查询的内容)都知道limit函数适用于mysql数据库,在Oracle数据库中无法使用,当需要使用到分页查询时,我们可以用其他的方法进行代替。上面这种写法,如果排除的表名多了,语句就会很长,还有一种更好的办法,使用not in关键字,只需要把要排除的表名直接写进去就好了。rownum n 是别名,括号里面是子查询,我觉得这个语句是先执行后面的where,然后再对里面的进行查询。原创 2022-09-22 18:56:00 · 223 阅读 · 0 评论 -
MSSQL注入 — 反弹注入
database=hacker数据库名 ').数据库名.dbo.表名 select *(被攻击网站的字段,通过order by已经判断出来了) from admin。database=数据库名 ').数据库名.dbo.字段 (字段可以多个,逗号隔开)反弹注入原理,将目标的数据全部反弹到自己构造的数据库中,opendatasource就是连接自己数据库用的(select * from syscolumns where id='前面查到的id值'原创 2022-09-21 19:58:44 · 670 阅读 · 0 评论 -
Dns注入
DNS-LOG注入 linux能不能用的话[一般不能dnslog注入,除非搭建smb服务]LOAD_FILE(绝对路径) 记得反斜杠。database().hjw.com =>日志就会记录。mysql稍微高一点的版本,默认是不可以读取内容的。load_file 读取文件的函数。DNS-LOG:DNS服务(LOG日志)=>DNS解析日志。文件共享(UNC路径)访问的东西都是把他当做文件处理。dns-log注入:obb(数据外带)Mysql函数:LOAD_FILE()原创 2022-09-20 21:14:25 · 658 阅读 · 0 评论 -
Access — 偏移注入
> select id,username,password,1,2,3,4,5 from admin 若显错位在3,4位置,则输出password,1。=>select 1,id,username,password,2,3,4,5 from admin 则输出username,password。=>select 1,2,id,username,password,3,4,5 from admin 则输出id,username。Access数据库排序。原创 2022-09-19 21:03:24 · 322 阅读 · 0 评论 -
Access — Cookie注入
不知道表名,我们可以猜admin表是否存在(burp跑sqlmap下的data文的txt)document.cookie 是用来设置cookie的。document.cookie="id="+escape("语句")URL栏接受数据的时候先接受RUL栏中的传参,然后再接收cookie里的传参。Cookie名字为id。,所以在注入的时候应该清空URL栏的传参,在回车。三、Cookie注入步骤(Access数据库)此处Cookie注入的条件。一、Cookie注入简介。二、怎么修改Cookie。原创 2022-09-17 21:09:22 · 236 阅读 · 0 评论 -
宽字节注入
过来的数据增加转义字符"\",以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。注入的时候可以用嵌套子查询或者使用十六进制代替表名记得添加标识符(0x开头)高版本已经删除魔术引号,需要特定函数开启。magic_quotes_gpc(魔术引号开关)POST的时候使用burp修改hex的值为%df。多字符编码 => 多个字符组在一起成为一个字。单引号、双引号、转义符号都会被添加转义符号。数据库使用GBK编码可能存在宽字节注入。GET的时候使用%df或者汉字。原创 2022-09-16 20:46:10 · 454 阅读 · 0 评论 -
盲注原理基础
and substr((select table_name from information_schema.tables where table_schema=database()),1,1) >100 判断出表名。and if(ascii((substr(database(),1,1)))) 判断出数据库第一个字母的ascii值。and if(length(database())>12,0,sleep(4)) 判断出数据库长度。若需要闭合就手动帮闭合下。原创 2022-09-15 16:46:33 · 514 阅读 · 0 评论 -
POST注入/HEAD注入
python sqlmap.py -u 目标url -delay=1 --level 3 --risk 2 -batch。python sqlmap.py -r 绝对路径 -delay=1 --level 3 --risk 2 -batch。select updataxml("a",concat("~", () ),"b") 这里需要拼接特殊字符串才可以报错。updatexml("a",绝对路径,"b") 更新xml文件内容。原创 2022-09-14 20:32:47 · 472 阅读 · 0 评论 -
SQL注入的原理分析
select * from news where id =2-1 =>返回1的值则一定存在。数字运算法:-1 (注意:+不可以,get传参会把+理解为空格,将'+'url编码为%2b)用户输入的数据被当做SQL代码执行[ 1.用户能够控制输入 2.]闭合(传入引号,让传入的引号和原本的引号配对、注释掉后面的引号)先假设->去验证->根据结果->错的继续改,正确往下走。A语句 union B语句(隐形条件:字段相同)如果数据库的字段是数字类型:强转。原创 2022-09-13 12:14:56 · 388 阅读 · 0 评论