pass-01
第一种方法:
![0c218c98a6f0920a3e1d9ec650f91a72.png](https://i-blog.csdnimg.cn/blog_migrate/a85929561c6527187f126952def9cc78.png)
上传一句话木马
发现该文件不允许上传,请上传.jpg|.png|.gif类型的文件,当前文件类型为:.php
![2c4da9ec40c7776487d9432c79c1b52b.png](https://i-blog.csdnimg.cn/blog_migrate/91fdfbbf843bca7837c4163f3bb15223.png)
既然是js前端校验,那么我们就来看看源代码
![1bcb0917a7b25fa8089e5f307d5d1403.png](https://i-blog.csdnimg.cn/blog_migrate/6de3f88cf6c7af112acfe35e7add8769.png)
可以看到js定义了一个白名单,只允许上传.jpg|.png|.gif格式的文件,并且对上传文件的后缀名同白名单做了对比校验。
对于js校验,我了解的有三种方式可以进行绕过
删除js校验代码
通过审查元素我们可以发现上传这里是调用了checkFile函数的将其删除即可
![5593784c7d2830b2c835e83d338e71e2.png](https://i-blog.csdnimg.cn/blog_migrate/8ea42c6db8dcafee3ec5fe3b4500ca3c.png)
![57b9b349839660f8d5b52ccd6199a76d.png](https://i-blog.csdnimg.cn/blog_migrate/808f6b256f97399ee7363e20a5f572df.png)
此时php文件上传成功
![d70d49b308cf8ea9dabeafa926263b22.png](https://i-blog.csdnimg.cn/blog_migrate/4c0191da5af26dc6a2f058e28d601705.png)
![2ba3af07ec7798881f3dda4b3d5eb254.png](https://i-blog.csdnimg.cn/blog_migrate/363f6ebea1cac7e8c25bb0abeab1627f.png)
第二种方法:
先改文件后缀名通过js校验再抓包更改后缀上传至服务器
![bf3594b163732fde9583bf8f26697150.png](https://i-blog.csdnimg.cn/blog_migrate/3413079d8d64bbcfcc64ab733737d0fe.png)
![41dd4663c02f546be2b344a2bcf423a1.png](https://i-blog.csdnimg.cn/blog_migrate/eb043cf23e61f756f558d9859ed87062.png)
修改后:
![760ca4be6d90d7822b11f576abe13ecc.png](https://i-blog.csdnimg.cn/blog_migrate/118314074777e85d91856d0d2c289e08.png)
此时上传成功
![bfc2017c202d1b841326b69b96fa9a16.png](https://i-blog.csdnimg.cn/blog_migrate/88b594d0014235b12c0229dfd8081c6a.png)
访问上传地址
![2e7acd3dd2fac43a3c1551f1478e7f9d.png](https://i-blog.csdnimg.cn/blog_migrate/73afe6aa1000e86fdb9433a25c737fac.png)
pass-02
只需要用burp修改一下mime就能上传成功
(1) 上传1.php的文件
(2) 通过burp抓包,修改文件类型为image/jpeg、image/png、image/gif
(3) 再发包成功上传
![4b0ab83232dd1c5b713bf9d96e5b243f.png](https://i-blog.csdnimg.cn/blog_migrate/5fadd7d7c492a8fdad7a922f7d1827bf.png)
![129017be78cca35b056f6aff80277dd5.png](https://i-blog.csdnimg.cn/blog_migrate/3215dda22738ffa7060735e1e1886d6a.png)
此时上传成功
![eaa1e586fb5a66122f73be63ec96ef77.png](https://i-blog.csdnimg.cn/blog_migrate/1cbe362f0cdd31806f0d61c39628c2b6.png)
pass-03
(绕过php黑名单)
上传PHP文件失败,根据返回的页面数据,判断应该是做了简单的黑名单处理。所以我们可以使用一
些其他可解析的文件因此我可以找其他后缀名当做php文件执行。
符合的后缀包括 php、php3、php4、php5、phtml、pht等,有时候需要挨个进行尝试
![f8de4d189454d6a00120dd126f964a35.png](https://i-blog.csdnimg.cn/blog_migrate/885deb3ea278634609ceb9497103d5f4.png)
打开配置文件---打开httpd.conf
修改代码,去掉注释符#
![470372a563976a288c02fc4e77ae1772.png](https://i-blog.csdnimg.cn/blog_migrate/bcd370aee5f8a027bf3eec50faaa17e6.png)
修改完成后保存重启即可
![e889ef46991a391980409d5a9106d4e2.png](https://i-blog.csdnimg.cn/blog_migrate/a5fcdfb1172f66d6d9c7bf6c068a67d6.png)
pass-04
![d54799765f2b4dfcadddaa87a80921bd.png](https://i-blog.csdnimg.cn/blog_migrate/3e9bfe27ec4b38c9bb03689d0f6d1fa8.png)
本关过滤了所有可能的脚本文件后缀名,但唯独没有过滤.htaccess文件,我们可知先上传.htaccess文件
这种情况,我们可以尝试上传一个.htaccess配置文件,将4.png图片当作php代码进行解析,首先创建一个.htaccess文件,里面写上代码
SetHandler application/x-httpd-php
这串代码的意思是如果文件中有一个4.png的文件,他就会被解析为.php,把这个文件上传上去。
上传上去之后,我们在把图片用Notepad打开,里面写上php代码。再进行上传。
最后我们访问这个4.png文件
![d500af03f97b891c7d832c94e4c12ca9.png](https://i-blog.csdnimg.cn/blog_migrate/2a361fbbdd347aab3e4afc70c496046f.png)
![0e82c367807589ce94b4a9dc3dfd0cfe.png](https://i-blog.csdnimg.cn/blog_migrate/10c91e41843dd0cfbe7ee2634f06f3d5.png)
访问上传图片地址
![a0ed266b5841826d318062e08455f96f.png](https://i-blog.csdnimg.cn/blog_migrate/3856e3ec8e3a38c717016d9bf2392b98.png)
pass-05
文件后缀绕过
根据Apache文件解析机制,从右向左开始解析文件后缀,若后缀名不可识别,则继续判断直到遇到可解析的后缀为止
![adef541968eee2b72fd5d2d53e3bfc19.png](https://i-blog.csdnimg.cn/blog_migrate/1f24f1ae3f72f5a883a91449bae90151.png)
上传后访问
![fe59e820054a6419052ad2dc43b5f903.png](https://i-blog.csdnimg.cn/blog_migrate/4a27c9efaa95abf6fc7fd6f1fc77446a.png)
pass-06
大小写绕过
这一关没有强制将大写转换为小写,所以我们可以上传纯大写或者大小写结合的后缀名
![b6549571a2175378556282798f52138c.png](https://i-blog.csdnimg.cn/blog_migrate/beb620de1a2d07219ec7549da0e13c92.png)
上传成功后访问
![66c5ec3eb66afc21580adc30f94127db.png](https://i-blog.csdnimg.cn/blog_migrate/d316a292de996412275107a86195b767.png)
pass-07
直接看源代码,发现没有首尾去空。上传php文件,抓包在后面加空格。
![86c828040933a510c3846d56cced9ce1.png](https://i-blog.csdnimg.cn/blog_migrate/c68ec6d0a24b8f691f3d1ddcc2d6f883.png)
上传成功后访问
![dcb47f672ebe62a25916286e9e31799b.png](https://i-blog.csdnimg.cn/blog_migrate/0b6593988faf78c9aac143c72f3d874c.png)
pass-08
第八关我们可以发现没有删除文件名末尾的点,和第七关思路一样,就是把空格换成点
上传成功后访问
![4144f52f0cec8172158436dbbf7be821.png](https://i-blog.csdnimg.cn/blog_migrate/5561c6c97d32fa53057d7a83e9b7b46f.png)
pass-09
第九关查看代码发现没有去除字符串::$DATA,和第七八关一样,直接上传,在数据包的php后面直接加上::$DATA
![575fdd683cbe0d37858cd2233cb3b591.png](https://i-blog.csdnimg.cn/blog_migrate/99af7e63c339723c7047d1671f1f15f1.png)
上传成功后访问
![e031d728a2605fcdaa3a3aa3f9837644.png](https://i-blog.csdnimg.cn/blog_migrate/4744536089dec21d603a50a454b259b7.png)
pass-10
这一关的思路是它没有循环验证,也就是说这些收尾去空,删除末尾的点,去除字符串::$DATA,转换为小写这些东西只是验证了一次。所以我们的绕过思路就很简单,在数据包中把后缀名改为.php. .说一下他的验证过程,首先他发现有一个点,这时会把他去掉,又发现有一个空格,也会把它去掉,我们这时还有一个点,也就是.php. 由于他只是验证一次,所以不会在去掉我们的点,这时就可以上传成功,也可以解析成功。
![6db85eff6cb6b7bed31ec6e9e93e0c35.png](https://i-blog.csdnimg.cn/blog_migrate/2bdbbb4dd10a4af5159b0a161faf1918.png)
上传成功后访问
![474e704e3acf77f4d9456ca88b8f7ac4.png](https://i-blog.csdnimg.cn/blog_migrate/784e83d46e6d3b967e8399a0129aa395.png)
如果大家还有什么其他闯关思路请在评论区留言~~~