第四周作业wp
- xss-labs(level1)
- xss-labs(level2)
这里看到代码把<实体化了,我们要让<逃逸出来就要主动闭合
?keyword=%27"><script>alert(1)</script>或
"><script>alert(1)</script>
3.
发现所有的尖括号全部被转义了,然后我们输入以下’ “ < >,看看谁没有被转义
发现单引号都没有被转义,就用onfocus事件绕过
但是我这里用了所有语法,都没有弹窗,不知道为什么,复制大佬的payload也没有用,非常的搞不懂
4.
发现符号并没有被转义
我们试着输入onfocus事件绕过,发现被过滤了
所以这里我们可以尝试<a> 标签
#"><a href=javascript:alert(1)>
点击蓝色字体,就可以通过
5.
输入常规命令,发现有一个script被替换成空了。这里感觉每次的靶场过滤的都不一样,看大佬wp,是把script全部过滤了,但是我的就不是,我的只过滤了一个,所以我双写script通不了关
这里我试了onfocus事件绕过,发现开头的on被过滤了,感觉有戏。
所以这里满足两个条件
- 一次性的替换
- 将关键词替换为空
所以我们考虑用双写绕过。于是我双写on,成功通过!
6.
我们可以看到友情链接是a标签,我们可以考虑伪协议javascript:alert(1)
添加友情链接直接就通过了
7.
发现输入框被隐藏了。
通过源代码,我们看到一个cook,这个t_cook应该是小饼干,所以应该是cookie注入
这里的type是指加入一个输入框,onclick命令用来执行。
但是很奇怪,我用cookie注入,没有任何反应。明明我的步骤,命令都是正确的,但就是无法出现输入框。很不解
8.PE结构
文件有一个名叫PE结构的压缩包,解压后是一个exe,把它拖进ida里面,发现什么都没有。然后我们搜索pe结构,发现pe结构重要的是文件头,所以我们把它拖去winhex里面
DOS头和NT头就是 PE 文件中两个重要的文件头
DOS头其首个字段 e_magic 必须为 0x5A4D(ASCII字符“MZ”),这是DOS可执行文件的魔术字,用于标识这是一个合法的DOS可执行文件
NT头(IMAGE_NT_HEADERS)。它以一个4字节的Signature开头,其值必须为 0x00004550(ASCII字符“PE”后跟两个空字节),这是PE格式的魔术字。
所以这里WZ,大概率是被篡改的DOS头,我们把W改成M看看
发现flag直接出来了。
9. [第二章 web进阶]XSS闯关_第一关
用标准命令即可<script>alert('xss')</script>
10. [第二章 web进阶]XSS闯关_第二关
发现escape()函数:不会对数字、字母和* @ - _ + . / 进行编码,但其他所有的字符都会被转义序列替换,因此这里只能自己构造闭合:‘;alert(1);’
11. [第二章 web进阶]XSS闯关_第三关
发现单引号转义了,发现多了一个反斜杠+单引号(’),那么就相当于’'构成了闭合,也就是说,少了一个单引号,我们就添加一个单引号就好了。
成功!
12. [第二章 web进阶]XSS闯关_第四关
一进去,页面就一直重复跳转,而且注入的地方也没有,我们就打开源码
发现javascript说明是伪链接,而且我们也从源码中看到了注入名:jumUri
于是我们使用伪链接注入:
?jumpUrl=javascript:alert(1)
成功!
13. [第二章 web进阶]XSS闯关_第五关
代码审计:
通过getQueryVariable('autosubmit')检查URL中是否存在autosubmit参数。如果参数存在(即返回值不是false),则执行自动提交逻辑。
若URL中存在action参数(即getQueryVariable('action')不为false),则将表单的action属性设置为该参数的值(即表单提交到该地址)。
若action参数不存在,则默认提交到当前页面地址(location.href)
所以,命令中既要有autosubmit和action
?autosubmit=1是为了绕过getQueryVariable('autosubmit')检查
action=javascript:alert(1)是执行伪协议命令,用&连接即可,成功!
14. [第二章 web进阶]XSS闯关_第六关
我们访问源码给的网址
发现了AngularJS的版本号,接着,我们试试有没有xss注入漏洞
客户端模板引擎(如Angular的{{}}、Vue的{{}})会自动解析页面中的模板表达式(如{{user.name}}),并将其替换为动态数据。若攻击者能控制模板内容(而非仅数据),即可注入恶意代码。
示例:攻击者输入{{1+1}},若页面返回2,说明模板引擎执行了表达式,存在注入点。
说明存在漏洞
接着我们上网搜索angular(版本号v1.4.0-v1.4.9)沙箱逃逸漏洞
发现payload:
{{'a'.constructor.prototype.charAt = [].join;$eval('x=1} }};alert(1)//');}}
然后成功注入
15. BUU XSS COURSE 1
这个平台怎么搞不了啊
16.xianzhi_xss_1
为什么我打开靶场什么都没有,抓包也抓包不来?!why?求讲解
17. 神秘龙卷风
解压得到:
内容由“+”、“.”、“>”三种符号组成,经过搜索确认这是一种名为“Brainfuck”的计算机语言。
得到flag
18.
查壳:发现是64位
19. LSB
对于LSB隐写的图片,我们用StegSolve打开模块,由于是RGB三原色的最低位隐写,所以在Data Extract模,提取Red,Green,和Blue的0通道信息,在这三个颜色的0通道上打勾,并按下Preview键
拉到头后发现,这里是一个png文件头
之后按save bin保存图片,出来后发现,图片变成了二维码,用手机扫描,出现flag
20.
这个题目有题目描述:数学很酷!使用RSA算法对密文进行解码,c、p、q和e是RSA算法的参数。
所以我们要下一个rsa
用python算出n,填充在程序里,然后点击calc c算出d,也就是密钥
拿到密钥后,就去算密文了
在RSA算法中,已知密钥求密文的算法是加密算法,其核心公式为:
C = pow(M, e, n)
公式解析
- C:最终得到的密文(加密后的消息)。
- M:需要加密的明文(原始消息,需满足M < n)。
- e:RSA的公钥指数(公开参数,与欧拉函数φ(n)互质)。
- n:RSA的模数(由两个大质数p和q相乘得到,即n = p × q,公开参数)
用python脚本跑一下密文
这串密文外面包个flag{}就行了
21.sandbox(第三周作业)
太好了,终于做出来了
问题总结:
- 第三题,onfocus事件绕过,我用了所有语句,所有payload我都试了,看大佬的wp,直接copy过来也没有弹窗。所以我认为可能是靶场,网络的问题
- 第7题,cookie注入。用bp和hackbar都用了,cookie位置也调过,抓包看cookie的确是在文件头的。当然,我也把它拉下去过。结果,输入框都没有出现。Payload也去和大佬的wp比对过是一样的。所以搞不懂为啥出不来
- 第15题,存储型xss。问过Ai,看过b站讲解,看大佬wp。道理我都懂,就是前端后台两手抓。但是,xss平台我搞不来啊。图片和文字的payload都复制过去了,啥动静都没有
- 第16题,buu上0解出,点进去啥都没有,感觉可能是靶场的问题。
- 第18题,pwn里的ret2text,看了大佬的wp和b站老师部分知识点讲解,给我干力竭了。容我缓缓。。。给我点时间,把软件装好,把代码理解一下再做,实在力竭了。
第四周学习笔记
- xss常用语句
- 基础语句:<script>alert(1)</script>
这里经常会出现闭合符号绕过,就连着说了
用这个语句的时候,符号不免会出现转义,这里有一部分符号转义
字符 | 命名实体 | 十进制编码 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
【1】场景:<、>、"被过滤,但实体编码未被拦截
实体编码替换:用HTML实体编码替代被转义的符号,如'→'、
"→"。
示例:<img src='hello' οnerrοr='alert(1)'> → 绕过单引号过滤时改为 <img src='hello' οnerrοr='alert(1)'>。
【2】这里如果遇到当</>被转义为</>
主动闭合:
双引号闭合属性:
Payload:"><script>alert(1)</script>
原理:">闭合value属性和<input>标签,直接插入新的<script>标签执行代码。
当然,也会有题目提前闭合,类似于[第二章 web进阶]XSS闯关_第二关,这里强行把第一个出现的引号闭合,导致我们的命令少着,所以我们多加一个引号,也可以把命令里面的引号逃逸出来。
【3】场景:输入被包裹在单引号属性中(如value='用户输入'),且后端过滤双引号。
单引号闭合+注释
Payload:' οnclick='alert(1)' //
【4】场景:后端将onclick替换为空字符串。
这个时候双写响亮登场!!
Payload:oonnclick=alert(1)
【5】场景:后端过滤小写onclick,但未过滤大写
这种大小写混淆,ONclick=alert(1)
混着写就好了
(以上是遇到过的情况,并不是全部。以后遇到其他的会加上去的)
- a标签:<a>标签是XSS攻击的高频载体,其核心风险点在于**href属性支持javascript:伪协议**,攻击者可通过构造Payload将静态链接转化为可执行脚本。可以理解为<a>标签与href以及JavaScript伪协议有着深层绑定。看到a标签就可以考虑伪协议了
<a href=javascript:alert(1)>:通过javascript:伪协议执行脚本
(3)onfocus事件绕过
核心要素 | 说明 | 示例或技巧 |
基本原理 | 利用HTML元素(如 |
|
关键事件 |
|
|
自动触发 | 结合 |
|
闭合策略 | 根据输出点的引号类型(单/双引号)进行闭合,将事件注入到现有标签中。 | 单引号环境: |
- PE结构
PE文件的头部是至关重要的,所以这里就系统的记录两个头部吧
DOS头 和 NT头 就是 PE 文件中两个重要的文件头
DOS头其首个字段 e_magic 必须为 0x5A4D(ASCII字符“MZ”),这是DOS可执行文件的魔术字,用于标识这是一个合法的DOS可执行文件
NT头 (IMAGE_NT_HEADERS)。它以一个4字节的 Signature 开头,其值必须为 0x00004550(ASCII字符“PE”后跟两个空字节),这是PE格式的魔术字。
分析文件头一般都是用winhex
- RSA算法
第一步:密钥生成
至关重要的一步!!
- 找两个大质数:随机选择两个非常大的、不同的质数p和q。
- 计算模数n:计算n = p * q。n的长度(比特数)就是密钥长度(如2048位)。n会同时出现在公钥和私钥中。
- 计算欧拉函数φ(n):计算φ(n) = (p-1) * (q-1)。计算完成后,立即并安全地丢弃p,q,φ(n)。它们绝不能泄露。
- 选择公钥指数e:选择一个整数e,使得1 < e < φ(n),并且e与φ(n)互质(即最大公约数为1)。通常直接使用65537
- 计算密钥d
这一步很不好算,要不就写脚本,要不就用计算软件,这里我一般用软件
2.在RSA算法中,已知密钥求密文的算法是加密算法,其核心公式为:
C = pow(M, e, n)
公式解析
- C:最终得到的密文(加密后的消息)。
- M:需要加密的明文(原始消息,需满足M < n)。
- e:RSA的公钥指数(公开参数,与欧拉函数φ(n)互质)。
- n:RSA的模数(由两个大质数p和q相乘得到,即n = p × q,公开参数)
知道原理后就可以以此编写脚本,从而算出明文了。
p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e=65537
c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
d=56632047571190660567520341028861194862411428416862507034762587229995138605649836960220619903456392752115943299335385163216233744624623848874235303309636393446736347238627793022725260986466957974753004129210680401432377444984195145009801967391196615524488853620232925992387563270746297909112117451398527453977
n=p*q
M=pow(c,d,n)
print(M)
这是我根据作业写的python脚本。记录一下,以后换下数据也能用0v0
以上是我这个星期的学习心得,有部分笔记由于过于零散,就没有系统记录,但是在题目的wp中有体现,希望师兄师姐们海涵。