前言

这两天参加了国外一个小比赛,与其说是比赛更像是一个教程,因为解题思路在题目中已经给出了,就当作基础练习了

Intro to Web 1

Web1主要针对web前端的一些基础知识点,打开环境后是一段文字,看到这里的红色部分右键查看源代码,在源代码中获得了flag的part1 CSCG{ImgAvH8w5 继续阅读文章可以在这里看到一个10000秒倒计时的控件,大致意思是要倒计时结束才能得到flag 继续查看源代码,发现是用以下js代码实现的,因为定义了变量,所以我们可以在控制台更改数值为0 这样就拿到了flag的part2:1a7364a71 再翻译往下读,文章介绍了一款叫做ZAP的抓包软件,最后一句话给出了提示要求看header头,这里我们直接在浏览器的network里查看header头,这样就得到了flag的part3 :VdGb98br} 整合起来就得到了第一题的flag: CSCG{ImgAvH8w51a7364a71VdGb98br}  

Intro to Web 2

打开题目环境,界面如下 点击这里的标蓝字体,进入另一个页面,在这里发现提示要求系统必须是windows95系统,这里的标识应该在header头里 使用bp抓包,更改header头,更改ua头为Mozilla/4.0 (compatible; MSIE 5.0; Windows 95; AOL 4.0) 重放后发现一段js代码,但没有实际加密作用,只是大幅度拖延flag显示时间,得到了flag的part1: CSCG{ l9jj550K 继续阅读文章,发现这里多了个选择控件,在文章中提示进行post提交,继续抓包 在http报文中发现post参数filename,直接将filename的值改成flag.txt得到了flag的part2: UaT0BVvk 下面还有一个相同的控件,提示要get方法请求同理修改get参数得到part3: Q9Z39J9A Flag的最后一部分在这里的蓝字标识处,但这里点击后发现文件直接被销毁了,无奈重新打开环境进行抓包处理 抓包后放掉第一个请求包,在回显报文中发现了这里的authorized为false,改成true放掉,成功得到了flag最后一部分:W4at6R2B} 整合起来就得到了第二题的flag: CSCG{l9jj550KUaT0BVvkQ9Z39J9AW4at6R2B}  

Intro to Web 3

打开第三题,依然是一篇文章,找到第一个题目入口,点击标蓝的here进入题目,进入另一个页面,标题是随机hash游戏 点击here提示,发现了如下的js代码逻辑,代码大致意思是在控件提交的变量值不能为空,不能是字符串,且如果值是数字的话不能小于50,最后将flag的值sha256加密n次后输出,这里的n就是我们提交的值 很明显hash是不可逆的,要对提交的参数进行绕过,先抓包查看http报文提交的参数,post提交了一个json格式的参数 那么我们可以利用json嵌套来绕过

{“chosenNumber”: {“chosenNumber”:0}}

提交得到flag的part1: CSCG{Q8oIoy3P 第二个题目入口是一个基础的sql注入,标准的登录框,要求admin用户等能才能获得flag 找到处理sql部分的代码,发现没有添加任何过滤 直接构造一个联合查询的语句:

Username=admin’ union select password,is_admin from users where is_admin=true— Password=随意

这样就得到了flag的part2: s956Uwvv 第三个题目入口是一个留言板,考察储存型xss 阅读留言板的逻辑处理时发现在输入框中提交的参数未经过滤直接写入数据库,然后直接在页面上显示出来,这就是导致xss储存漏洞的根本 题目中说明管理员每30秒会访问该页面一次,那么我们可以将页面重定向到其他网站盗取管理员cookie,首先我们在自己的vps写一个名为log.php的接受代码,抓包看到cookie的标量名为session-id,log.php代码如下 然后在同目录创建一个cookie.txt文件,在网站输入框下构造xss代码,将网页重定向到我的vps下log.php文件,xss构造如下:

在vps cat cookie.txt得到管理员cookie:

d82bbb0739fc1493b5625186b6e5faa7bfb6da35b485c468a13d703b432db500

由于自己也会受到重定向影响,所以我用bp抓包替换cookie进行访问,成功得到flag的part3: WIfJAzNs} 整合得到web3的flag为: CSCG{Q8oIoy3Ps956UwvvWIfJAzNs}