最近一直在学filter绕过的姿势,所以急需shell下绕过的方法,其中关键的一环就是shell下的进制转换!
主要参考:
https://stackoverflow.com/questions/1604765/linux-shell-scripting-hex-string-to-bytes
https://stackoverflow.com/questions/6292645/convert-binary-data-to-hex-in-shell-script
进制转换有多种工具,在linux上常见的有hexdump、od -x、xxd等
下面我们来简单介绍一下这些命令
xxd
xxd比较常用,也比较好用
|
|
上面的是xxd的用法,下面我们来逐步介绍!
将0x313233解释成123
root@test:/# echo 0x313233| xxd -r
123root@test:/#
需要注意的是,我们不能直接使用xxd -r 0x313233,原因是xxd后面只能接文件!而echo 123,并用管道连接,其实就是创建了一个临时文件交给xxd来处理将123解释成0x313233
root@test:/# echo 123|xxd -ps
3132330a
局限
每行有限定字符个数,xxd -ps限定每行最多有60个16进制数
而xxd -r则至多转换16个字符
解决办法
|
|
|
|
注意
- 对于字符串转16进制中每行60个16进制的限制,可以使用echo 123|xxd -p|tr -d '\n'
- 对于16进制转字符串中至多转换16个字符的限制,可以使用xxd -r -p中的r和p一定得分开
应用
|
|
上面的应用综合利用了所学的知识,其中前两步是铺垫,最后一步才是真正的poc。需要注意的是bash -c 一定接字符串,而且该字符串需要用双引号括起来!
|
|
上面同样是十分完美的应用,主要特点是使用了bash -i,这相当于一个交互式的应用,管道线前面输出的内容会在这个交互中完成,完成后立刻退出!注意,管道线前面输出的内容不能用双引号括起来!
perl的妙用
|
|