天天看点

位数固定可控字符的任意命令执行

文章目录

    • 15长度:
    • 七个字符:
    • 五个字符的:
    • 四位的shell

15长度:

位数固定可控字符的任意命令执行

思路分两种:

1 是直接写

2 是从外部服务器下载 比如

位数固定可控字符的任意命令执行

限制字数没有限制次数:

位数固定可控字符的任意命令执行

依次追加写入就好了~~

位数固定可控字符的任意命令执行

七个字符:

p神写的牛逼!

\切割的思路去实现:

位数固定可控字符的任意命令执行

shell如下:

为什么要base64呢?

做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏。

位数固定可控字符的任意命令执行

shell和py 脚本如下:

位数固定可控字符的任意命令执行

四位和五位的情况:

五个字符的:

题目:

位数固定可控字符的任意命令执行

ls -t 为了让 文件名字可控,否则 是按 默认的文件名排序的(字母顺序)

位数固定可控字符的任意命令执行

所以 这个点不是很好构造。

位数固定可控字符的任意命令执行

默认排序是上面那个

思路是 直接生成 ls的文件在后面追加

位数固定可控字符的任意命令执行

shell如下:

位数固定可控字符的任意命令执行
位数固定可控字符的任意命令执行

可以发现ls -t 没有执行

因为没有 加空格

所以在shell里面 加上空格

位数固定可控字符的任意命令执行

四位的shell

需要扩展几个知识点:

关键点在于 通配符:

位数固定可控字符的任意命令执行

相当于 把文件名拼接成一句话去做命令执行:

位数固定可控字符的任意命令执行

星号加 命令 去实现 长命令的拼接:

位数固定可控字符的任意命令执行

知识点2

逆序的命令:

位数固定可控字符的任意命令执行

*的话 会直接 执行的

位数固定可控字符的任意命令执行

思路是这样~~

位数固定可控字符的任意命令执行

无数字字母的shell

继续阅读