[NSSCTF][Web+Misc]小白练手(七)

Web

[CISCN 2019华东南]Web11

题目:(SSTI、Smarty、RCE)

在看到这道题目的时候,我们可以先从题目的提示开始看起,

题目提示可能使用SSTI模板注入(SSTI就是服务器端模板注入)

通过查看到题目右上角有IP地址,又题目页面最下端有提示,该浏览器的模板引擎为Smart

这里抓包,猜测是否IP是否为XFF头进行控制

X-Forwarded-For:{4*4}

发现确实是这样,我们在利用代码执行,查看flag在哪

system('ls /')

查看根目录发现flag路径,进行访问

system('cat /flag')

即得flag

NSSCTF{7bda063b-92f8-45d5-ab36-ad5c16508b86}

补充:

漏洞原因:服务端接收了用户的恶意输入以后,未经任何处理就将其作为Web应用模板内容的一部分,通过破坏模板引擎,从而可能导致敏感信息泄露、代码执行、GetShell等问题

这里我们可以拓展的了解一下凡是使用模板的地方都可能会出现SSTI的问题、SSTI不属于任何一种语言,沙盒绕过也不是,沙河绕过只是由于模板引擎发现了很大的安全漏洞。

php常见的模板:Twig,Smarty,Blade

这里我们说到的模板引擎:

一、(含义)模板引擎是一种将数据与模板文件相结合,生成最终输出内容的一种工具。

二、(原理)模板引擎会读取模板文件,解析其中的标记和变量,然后将实际的数据填充到相应的位置,最后生成完整的页面内容。

三、(特征)

代码分离:将页面的逻辑代码和显示代码分离,提高代码的可读性和可维护性。

提高开发效率:可以快速生成页面内容,减少重复工作

易于团队协助:减少代码冲突

[HNCTF 2022 Week1]easy_html (记录答案)

题目:

提示cookie里有东西

给了个url访问一下

突破长度,出flag

NSSCTF{35d0b56d-2776-4994-bfac-eb29c94316ae}

[SWPUCTF 2022 新生赛]奇妙的MD5

题目:

网上搜了一下奇妙的字符串ffifdyop加密后,再解密是一个注入指令

输入之后弹出来以下页面

查看源码发现两个GET传参的弱比较

我们进行弱比较

s1502113478

0e861580163291561247404381396064

s1885207154a

0e509367213418206700842008763514

这里出现源码,是一个简单的文件包含加md5碰撞

传参正确之后还是没结果,我们抓包发现可以目录/f1na11y.php

我们替换一下目录,即得flag

NSSCTF{6bdcfff8-8c45-4d51-93e6-991133fc92b8}

[SWPUCTF 2022 新生赛]1z_unserialize

题目:(PHP反序列化、RCE)

通过题目给的unserialize函数可以观察到,这题用的一个POST传参,参数为nss

再看上方的lyh类,里面有三个参数,第一个为固定参数,第二个为关键字调用一个伪变量,可以看到这边两个调用有点像“函数+命令”

这里的析构函数__destruct()可以在最后使用这个命令

所以这题就很简单了,写一个反序列化php脚本

用小皮运行一下得到

在进行POST传参

可得flag

反序列化的每个字母都代表着不同的含义,O代表class类,s代表字符串等等NSSCTF{554e816b-75e9-4c95-990e-a2ecea18a32b}

[NISACTF 2022]checkin

题目:(代码审计,编码转换)

这题一开始进行正常传参读取文件包含的flag.php发现行不通,当我将代码复制到cursor中准备审计时发现,有许多unicode

那么我可以将这些进行URL编码输出,看看正确的排序应该是什么样的

正确排序输出应该是这样的,我们来GET传参一下试试

发现还是没有flag,这里我们发现我们正常的“=”和“&”也被URL编码了,所以我们将%3D“=”和%26“&”改回去

最终的EXP是

?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6+Flag%21%E2%81%A9%E2%81%A6N1SACTF

即得flag,这题主要考察对代码的审计能力和对url编码的敏感度

NSSCTF{2026b414-1ffb-495b-acee-942692507581}

[GKCTF 2020]cve版签到

题目:(%00截断、CVE)

没有提示,我们抓包放包看看有无提示

可以看到这里提示本地地址,我们用本地地址访问一下

这里提示后面得有ctfhub.com

发现无显示,猜测是否是%00截断,发现还是无显示,这里忽略了一个点就是,他的末尾为123,这里从他的Referer头也能看到

我们可以通过%00截断得到flag

NSSCTF{0107de7d-55c1-429a-8467-191e520cd828}

补充:

这里为什么会用%00截断,可以看一下下面的表

url中的%00(只要是这种%xx)的形式,webserver会把它当作十六进制处理,然后把16进制的hex自动翻译成ascii码值“NULL”,实现了截断。

[羊城杯 2020]easycon

题目:(目录嗅探、webshell、base64编码转图片)

看到这个页面我们手足无措,可以通过尝试访问他的敏感目录看看有无信息,这里我是直接进行目录扫描的

访问一下index.php

直接弹出来一个webshell密码,随后界面变成这样

进行webshell后发现一个可疑文本

看着有点想base64,解码看到了,图片格式的文件头

用ai跑一个base64编码转图片的脚本,即可获得flag图片

NSSCTF{do_u_kn0w_c@idao}

[NISACTF 2022]babyupload

题目:

一开始傻傻的文件上传,发现什么都上传不了

然后查看源码,发现一个目录访问一下

通过代码审计,我们发现上传的文件名会凭借到绝对路径中,os.path.join函数用于凭借一个或者多个路径

所以,当我们将上传的文件名,通过BP改文件名,即可访问/flag文件夹,得到flag

连续放两次包,即得flag

NSSCTF{b5430550-d1bb-4bed-9c4a-e137a5993a03}

[SWPUCTF 2022 新生赛]ez_ez_unserialize

题目:

这里要值得注意的是析构函数__destruct方法,当对象被销毁时调用。

接下来就是构造EXP,注释已经写在EXP里面

当我们拿着构造出来的反序列化参数传参时,发现无反应,因为其中有个__wakeup函数只要数量大于实际属性的数量即可绕过此函数。

因为某些php版本如果序列化字符串中声明的属性数量大于实际存在的属性数量,PHP可能会在反序列化时忽略多余的属性,而这些多余的属性可能会影响对象的状态或行为。

因此这次需要把属性数量改为2,以下是最终exp

O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}

NSSCTF{fb2c7f7c-77d4-4fec-a84f-8703cf9cee86}

[NISACTF 2022]babyserialize

题目:(POP链,反序列化,代码审计、RCE)

题目一看很长的代码,应该是要构造POP链

构造POP的第一步

找链尾,找flag,eval,exec这种敏感的数据

这里我们发现eval函数,参数为txw4ever

invoke():当尝试以调用函数的方式调用一个对象时,会被自动调用。

所以我们可以利用txw4ever这个参数来进行RCE

补充:

__invoke是对象被当做函数进行调用时就会触发

__ToString方法是当对象被当做字符串的时候会自动调用

可以用来激活函数

__set是对不存在或者不可访问的变量进行赋值就会自动调用

__call是对不存在的方法或者不可访问的方法进行调用就自动调用

__wakeup函数只要数量大于实际属性的数量即可绕过此函数,所以在使用unserilize之前就会触发

方法二:

在NISA::__wakeup里,做弱比较的时候就能触发__toString
构造反序列化

O:4:"NISA":2:{s:8:"txw4ever";s:18:"SYSTEM("cat /f*");";s:3:"fun";O:8:"Ilovetxw":1:{s:2:"su";r:1;}}

即得flag

NSSCTF{39ce7354-5395-4e3c-a071-461b28c14ee1}

[MoeCTF 2022]baby_file

题目:(目录扫描dirsearch、php伪协议)

这题看着是一题文件包含,但是没给任何传参方式,我们先扫描一下目录,看看有没有什么发现

这里我们用的是kali自带的目录扫描工具dirsearch

dirsearch -u http://node5.anna.nssctf.cn:27450/

这里已经扫出来一个/flag.php,我们看能不能直接访问他

发现报错,那我们使用php伪协议试试

这里将base64解码,即得flag.php内容

可以发现已得flag

(这题咱们的php伪协议,遇到一次可以手敲一次,以后碰到这种题目可以直接手敲伪协议,也能加快解题速度)

NSSCTF{ee2209ba-fd64-425f-a120-aba667a785e0}

[HCTF 2018]Warmup

题目:

当页面没有可用信息时,我们可以查看源码

在源码中我们发现一个文件,尝试访问一下,发现源码

这里我们发现了一个比较敏感的文件hint.php

我们直接访问肯定是被挡住了

这里我们进行代码审计,发现需要绕过6层我们一层一层看

第一层

第二层

第三层

第四层

第五层

第六层

这里我们刚开始未绕过访问时,提示了一个路径

所以最终的payload就是

?file=hint.php?../../../../../../ffffllllaaaagggg

即得flag

NSSCTF{49a6059a-b22b-43ef-9aa7-1b81776794e1}

Misc

[SWPU 2019]伟大的侦探

题目:

压缩包里的文件进行了加密

我将密码.txt放进010

看不懂是什么字符集,看了眼WP字符集为EBCDIC

切换好发现密码wllm_is_the_best_team!

看了一眼WP给了一张解码图

最后解得flag

NSSCTF{iloveholmesandwllm}

[SWPU 2020]找找吧

1.是个加密的压缩包,没爆破出来,放进Winhex里面看一下

2.发现一个key,尝试一下是不是压缩包的密码

发现密码成功

3.里面是一个mp3文件和一个加密的压缩包

4.使用audcity工具打开 mp3文件,发现末尾像莫尔斯密码,其宽的表示-,其窄的表示. 空格表示/.

得到:

-…/…-/…–/----./-…/…–/./----./…—/-…/-----/.----/…—/.-/.-/-…

摩斯密码得到:D43963E92B012AAB

5.使用该密码去破解secret.rar发现不对

6.使用Winhex 查看findme.mp3发现文件格式为 rar文件

7.将mp3修改为rar,解压得到

8.继续使用audcity工具打开 mp3文件,发现末尾像莫尔斯密码,其宽的表示-,其窄的表示. 空格表示/.

刚上次的一样

得到的莫尔斯密码和前面一样(比上文的莫尔斯电文更明显)。摩斯密码得到 :D43963E92B012AAB

10.使用在线MD5解码工具对D43963E92B012AAB进行解密,得到密码:n1ce_try

11.使用得到的密码对secret.rar解压得到两张图片

12.使用 010编辑器对hint.png图片进行高度修改,保存图片。

13。查看图片,发现图片上有一串字符:veni ,vidi,vici,百度发现是凯撒大帝说的语录

14.使用Stegsolve查看git图片的frame信息,发现里面有字符bFyd_W1l3_Cah

15.通过前面图片搜索的字面意思是凯撒语录,那就猜测组后结果是凯撒解密。因此将bFyd_W1l3_Cah对其解密,联想这道题目是SWPU,最终的解密为:sWpu_N1c3_Try

后面的步骤是看的WP,有点抽象

NSSCTF{sWpu_N1c3_Try}

tri_it

题目:(浏览器命令执行、压缩包破解)

整合包加密

解出密码

打开flag.txt

发现为jsfuck编码

放进firefox控制台运行,得出flag

flag{d7da7aeb-a3d6-4637-aff5-57ac9a00582b}

[SWPU 2020]耗子尾汁

题目:(文件分离、16进制编码转换)

这里题目是一个gif文件,我们首先文件分离一下

两个压缩包

第一个:

发现被防住了哈,出题者竟然预判了我

第二个:

是一个MP4观看视频的时候发现了一串base64

c2lnbl9pbg==解码一下得到sign_in

我们再将mp4分离一下,分离出来一个加密的压缩包,拿刚刚解码出来的结果试试

成功解压里面的文本,发现又一串加密

在将它按照base64 base32 hex 依次解码得到字符串:lvueiakxudsyqehszqhykggsyylkvvi

在根据下面的提示:单表替换密码,

在尝试之后发现是仿射,解码之后得到flag

在解密一下

解得最终的flag为FLAGYOUHAVESIGNEDINSUCCESSFULLY

NSSCTF{you_have_signed_in_successfully}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值