TSCTF-J

  • Web方向

0x01 easyWEB

打开页面发现就是一个输入框,输入了几次都是error

查看源代码发现一个叫submit.js的文件,内部有一个叫做BubbleGVM的函数,初步推测与检测输入有关

进入submit.js查看源代码,发现了一段代码

用python脚本翻译一下十六进制代码,得到

发现一个目录叫/fllllaiig,进去看看

通过get方法传入已经序列化的参数,当参数为常规可反序列化对象时进行反序列化,传入protected类型变量opfilenamecontentpasswd,其中passwd值需要经过验证,在传入pop参数后在析构函数中调用process函数进行反序列化以及验证passwd操作

发现两个点:

第一个点

加盐md5,已知盐值,而且提示passwd都是数字,则尝试用脚本跑出来

之后在文件中搜索发现最后的密码为5201314

第二个点:

析构函数中op==='2'为强对比,而前面验证函数中op=='2'为弱对比,因而可以通过op=2来绕过强对比,避免op被置为'1'从而跳入put分支

第三个点:

变量类型为protected,在之后构造payload时需要对payload进行手动修改

构造payload:

远程file_get_contents(file)需要用绝对地址

在构造protected变量的序列化过程中存在\00字符,表现为不可见字符,需要手动添加,位置为环绕*字符左右各一个,同时s要大写表示后面允许使用\00的表达

最终payload:

发现result并无返回值,查看页面源代码发现hint:

进入到/bubblegvm5201314目录下查看

发现是正则表达式检测,通过异或绕过

Payload:

跳转到phpinfo界面,在disable_function处发现flag:

0x02 EzUpload

传一个一句话上去,发现过滤.php类型的文件,老规矩传一个jpg上去发现成功了

上传图片马发现有过滤关键字,尝试多次发现过滤eval关键字

eval进行rot13加密绕过检测并且在代码段进行解密,成功绕过检测

Payload:

用burpSuite抓包更改文件后缀从jpg改成php绕过检测

用中国蚁剑连接并找到了两个假flag

所有的地方都找不到flag,怀疑flag在根目录可是我们并没有权限访问

上传一个phpinfo.php查看一下phpinfo

发现了溢出屏幕的disabled_functions

和只有/var、/usr和/tmp的open_basedir

这里可以通过上传php文件然后利用chdir(‘..’)指令前往前面目录让目前目录变为根目录最后使用var_dump(scandir(‘/’))获取目前目录所有文件

Payload:

发现flag.txt

然后将var_dump(scandir(‘/’)换成get_file_contents(‘/flag.txt’)就可以获取flag了

0x03 rcmd

先进行代码审计

大致流程为输入一个url然后该网站与url产生连接,传输数据后关闭连接

想让它向本机传输数据,但是url过滤127.0.0.1localhost,所以采用进制绕过

由于连接之后只会发送the content is 和一个整形,我们用%1$s覆盖start的值让页面输出字符型内容

扫描端口发现开放端口并在5000端口检测到回显有一段文字提示

最终payload:

进入/query?=path/fl4g/flag下查找

发现文件过滤

进入根目录下查找,发现/app目录下有三个文件main.pyfile.pyreadfile.py

main.py:

File.py:

Readfile.py

代码审计得到,这三个脚本读取文件并过滤文件名fl4g。解决方法为利用format格式化绕过fl4g的名称检测

Payload:

获得flag

Last updated