writeup

南京邮电大学网络攻防训练平台 web writeup

签到题:

查看源代码 就可以看到 flag:nctf{flag_admiaanaaaaaaaaaaa}


md5碰撞: 

通过阅读代码,不难发现,要想得到flag,那么就必须满足“变量$a的值不为空、$a的值不为‘QNKCDZO’、$md51==$md52”。‘QNKCDZO’进过MD5加密之后的值为“0E830400451993494058024219903391”。随机找一个0e开头,比如“s878926199a”,以get形式提交即可获得flag:


这题不是web:

下载图片,丢进notepad++,可以看到flag


Aaencode:

表情包加密,在控制台里输入var+表情包密码 就可以解密


Php decode:

将代码复制进php文件,把eval改成echo,然后用搭建了php环境的电脑打开这个php文件,可以看到flag


文件包含:

根据提示是文件包含,且是本地文件包含,所以直接在URL后添加

?file=php://filter/read=convert.base64-encode/resource=index.php,读取到base64加密的index.php文件,可以看到flag


Cookies:

抓个包



writeup_第1张图片


层层递进:

打开传送门“题目地址”之后显示一个网页,F12打开后可以看到有个“SO.html”,打开,继续F12,可以看到还有“SO.html”,再打开,直到看到“404.html”, 点开后按F12可以flag在注释里面。


单身二十年:

点击传送门“题目地址”

点击链接:_到这里找key__

无果,返回上一个网页,之后查看源代码:发现 ./search_key.php点击此链接

进去后按F12,得到最后的flag!


你从哪里来:

使用burpsuite抓包,并且修改referer头部为 www.google.com,点击GO,即可看到flag


PHP decode:

在最后一句调用功能函数ClsI对字符串“+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA==”进行操作!首先将其进行base64解密,之后将其结果使用gzinflate进行解压操作,最后使用一个for循环将字符串中的字符码全部前移一位,之后返回结果!

此处要想获得flag可以在本地使用phpstudy来搭建PHP开发环境,之后将eval改为echo,并且在浏览器中运行该PHP文件即可得到flag


COOKIE:

用burpsuite抓个包,把login=0改为login=1,点击go,即可得到flag:nctf{cookie_is_different_from_session}


bypass  again:


writeup_第2张图片

 根据这些已知的信息我们可以发现这里的两个要求有一些矛盾,但是我们联想到这是一个使用php编写的脚本,而且在php中对数组的MD5加密之后都是NULL,所以可以使用这个小点来试试:

原来的URL

http://chinalover.sinaapp.com/web17/index.php

对其进行修改加入构造的参数:

http://chinalover.sinaapp.com/web17/index.php?a[]=x&b[]=y

这里的x、y 可以为任意数值!

之后查看:

writeup_第3张图片

变量覆盖

打开题目链接:

根据提示信息查看source.php

extract()函数的作用:从数组中将变量导入到当前的符号表,该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

由于extract的参数直接是$_POST,那么就存在了变量覆盖的可能了。使用Burpsuite修改请求参数,传递pass和thepassword_123覆盖掉默认的thepassword_123的值,就可以得到flag了

操作如下:

填写表单之后提交并且使用burp suit进行抓包:

writeup_第4张图片
writeup_第5张图片

之后转到Raw模块下:


writeup_第6张图片


writeup_第7张图片




原文:https://blog.csdn.net/Fly_hps/article/details/79384591




Bugku web writeup

WEB2

点开图片是一组滑稽脸,按F12直接可得flag


文件上传测试:

通过上传.png文件,得知非php文件,于是采用burp进行修改上传的文件。


writeup_第8张图片

得到flag


计算器:

直接按F12,修改maxlength为3

在输入正确结果即可得到flag


web基础$_GET

```

$what=$_GET['what'];

echo $what;

if($what=='flag')

echo 'flag{****}';

```

根据题意,直接将what赋值为flag,就可以得到flag


 web基础$_POST

和上道题差不多,然后用火狐hackbar插件


writeup_第9张图片

得到flag


矛盾:

观察题目,应该是使用is_numeric遇到%00截断的漏洞,这里构造

http://120.24.86.145:8002/get/index1.php?num=1%00

得到flag


web3:

界面有点不尽 的弹窗,应该是使用了大量的alert语句,直接查看网页源代码

最后一行是这样的

使用html解码,得到flag


你必须让他停下 :

打开网站后网页一直都在跳动,而且页面不同,猜测flag在其中的一些网页中,采用burp一帧帧的看,在Repeter多次go,很容易就得到了flag。



变量1

首先观察程序,很明显看到了$$args,考虑到此题可能考GLOBALS变量,直接构造如下赋值即可:

http://120.24.86.145:8004/index1.php?args=GLOBALS

得到flag



web5:

查看网页源代码,发现了一大堆[]()组合,考虑是JSFUCK,

直接将括号复制到谷歌浏览器的控制台运行得到flag


头等舱:

采用burp抓包,发送到repeater,点击go,在请求头可以看到flag


域名解析

域名解析需要修改hosts文件,这里我们使用ubuntun虚拟机进行这道题的解答

首先输入这样打开hosts文件

将host文件修改为这样,然后直接访问flag.bugku.com得到flag


flag在index里

将网页点开,在点击相应连接,网页地址栏变为:

http://120.24.86.145:8005/post/index.php?file=show.php

看到了file关键字,看看用php://filter能否将index读出来

http://120.24.86.145:8005/post/index.php?file=php://filter/read/convert.base64-encode/resource=index.php

将得到了base64解码,观察程序得到flag


输入密码查看flag

直接burp用intruder爆破,


成绩单

向其中分别输入1,2,3...发现可以查询,当向其中输入1'时,程序不能查询,根据观察题目,猜测应该有4列

输入0,没有查询结果,在这里使用0作为回显,输入0' union select 1,2,3,4 #

得到相应的值

先查询数据名称0' union select database(),2,3,4; 为skctf_flag

然后查询表名

```

id=0' union select table_name,2,3,4 from information_schema.tables where table_schema='skctf_flag'#

```

查到为flag4,继续查询列名,得到skctf_flag,然后继续查询,

得到flag

秋名山老司机

要求在2秒之内计算结果,多次刷新界面,有时候回出现如下界面:

无奈,只好写一个脚本,对value赋值,这里将代码贴上

```

import requests

import re

import base64

url='http://120.24.86.145:8002/web6/'

s=requests.session()

r=s.get(url)

flag=r.headers['flag']

print(flag)

flag1=base64.b64decode(flag)

print(flag1)

flag2=base64.b64decode(str(flag1).split(":")[1][1:-1])

#将flag分为两部分,[1:-1]就是获取到的值

print(flag2)

data={"margin":flag2}

r=s.post(url,data)

print(r.text)

```

cookies欺骗

打开网页后是一堆乱码,但是看到url中filename=a2V5cy50eHQ=,尝试解码,get文件夹keys.txt,打开什么也没有。

由于keys.txt是以base64编码输入的,我们不妨以base64编码的方式传入index.php,看看有什么结果也是什么也没有。

尝试将地址栏中的line赋值为1,终于出现了一行代码,然后估计line为几,就是读取第几行,一行行试的比较麻烦,这里写一个脚本来获取整个index.php文件,这里贴上代码:

```

import re

import requests

url='http://120.24.86.145:8002/web11/index.php?line=%d&filename=aW5kZXgucGhw'

for iin range(100):

url1=url%i

c1=requests.get(url1).text

print(c1)

if c1=='':

break

```

得到的index.php文件中的代码如下:

```

'keys.txt',

'1' =>'index.php',

);

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

$file_list[2]='keys.php';

}

if(in_array($file, $file_list)){

$fa = file($file);

echo $fa[$line];

}

?>

```

看到了keys.php猜测flag在这里。然后在flag.php中传入margin=margin,得到flag

writeup_第10张图片

如图所示

XSS

查看网页源代码,感觉只有可能给变量id和s赋值,这里先采用id赋值

然后查看网页源代码

发现其中的<>被过滤,这样就简单了,使用unicode编码进行绕过

?id=\u003cscript\u003ealert(_key_)\u003c/script\u003e

进行输入,得到flag

never give  up

查看网页源代码,发现了1p.html,直接访问,发现跳转回主界面

但是1p.html是实实在在存在,而且还在当前目录,考虑如何访问1p.html

查看源代码中直接将index.php修改为1p.html,没想到竟然成功访问了

将得到的语句进行Base64解码,根据解码的结果在进行一次url解码,查看源代码,发现当前目录存在f4l2a3g.txt,访问得到flag

welcome to bugkuctf

查看源代码,访问hint.php,正常来讲,一个php文件是有内容的,考虑如何访问到hint.php

程序需要先使user的值与welcome to the bugkuctf相同,但是这里有file_get_contents()函数

可以采用php://input才访问原始请求数据的只读流,这里将txt赋值为php://input

在post相应的值。

writeup_第11张图片

具体操作流程

将file赋值为phpfilter读相应的base64编码的文件。代码如下:

writeup_第12张图片

hint.php

看到了flag.php,估计我们的flag就在其中,通过访问hin.php的方式在来访问flag.php,方法不可行,就需要考虑其他的方法了。

通过思考,一种可行的方法就是通过在index.php(如果一个地址栏末端是'/',则默认是index.php)中通过一些方法使hint.php加入其中,在通过一定的方法使hin.php包含flag.php 

而我们看到的index.php文件只有一段注释性的代码,里面应该还有一些其他的东西,尝试是否可以访问。直接将一开始插图中的hint.php改为index.php就好了。

   果然,其中还是藏有许多东西的(将代码复制粘贴出来保存为txt文件):

writeup_第13张图片

flag.php

这里用到了反序列化(我并不是很熟悉,多亏大佬的帮助),这里附上源代码:

writeup_第14张图片

反序列化的源代码

这样思路就清楚了,尝试给password复制为反序列化的值,查看结果

writeup_第15张图片

反序列化的值就是password那堆恶心的东西

然后查看源代码就拿到了flag.

过狗一句话

看题目意思应该就是需要给s赋值,看到题目的时候也是觉得无从下手,多谢大佬的指点,使得做题在有了一些眉目。

    首先将s赋值为phpinfo(),发现可以访问,说明s可以输出我们输入的结果

    然后题目一般flag文件都在.php文件中显示,尝试查看所有的文件

                                                s=print_r(glob('*.*'))

    然后可以看到flag文件,直接访问相应的flag文件得到flag


字符?正则?

看题目就是给id根据正则表达式的条件赋值,我的赋值是这样的:

http://120.24.86.145:8002/web10/?id=/keyaakeyaaaaakey:/a/aakeya'/i

然后就拿到了flag

前女友(SKCTF)

点击查看源代码,然后在查看code.txt,代码如下:

writeup_第16张图片

code.txt

意思大致就是v1!=v2,md5值相等,之前提到过,是240610708和QNKCDZO,然后比较v3和flag,这里利用了strcmp的一个漏洞,不能比较数组,这里我的构造如下:

payload

成功拿到flag

login1(SKCTF)

这道题是一个登陆框,登陆admin,提示用户已经存在,后来自己注册了一个账号,结果不是管理员不能查看flag,未果。在考虑如何使用admin登陆,刚开始使用万能密码登陆,结果没有登陆成功,然后尝试用约束攻击,约束攻击的原理就是注册用户名为'admin    '(有多个空格,这里是三个)的账号,密码'123'(密码可以自定义),然后登陆成功,但是数据库会返回表中的第一个用户,也就是真真实实的admin(这个漏洞只可能在老版本的sql中出现,新版本的mysql已经修复漏洞),然后就可以用admin的身份登陆网页,拿到flag。

    这里我注册的账号为‘admin   ’(三空格),密码为‘ABCabc123’然后就成功以管理员的身份拿到了flag

    不过好像提交不了,这个题可能被破坏了吧?

你从哪里来

writeup_第17张图片

           这个题是真的好迷啊,刚开始做没做出来,打开界面就这么一句话:are you from google?

        然后改了半天没出来,后来用谷歌也没打开,甚至翻到了国外用谷歌来访问这个题还是老样子。

        后来在群里激烈的讨论了下才知道原来是这么做的啊:

writeup_第18张图片

将这个地方改为谷歌原生的网址就好了:https://www.google.com

中国用谷歌会默认转到香港hk。

md5 collision(NUPT_CTF)

writeup_第19张图片

md5碰撞,emmmm,这道题算是做了好久,脑洞不够大!!!!

打开文件,要求输入a的值,不过文件的后缀名是.php(一般要用到0e开头的),

这里就需要补充一波常识了:

        在php文件中,以MD5值以0e开头的话,php就会认为他们两个的值相等  。所以可以写个脚本来跑出一个以0e开头的

writeup_第20张图片

不过这里跑出来的是数字,然后没有通过检测,可能需要使用字符串。    

编程能力有限,然后直接在网站上找了以0e开头的字符串:

                http://www.219.me/posts/2884.html

然后直接选其中一个提交拿到flag

writeup_第21张图片

各种绕过

看到了flag.php,鸡动的赶紧看看能不能直接看,然后未果。

考虑开始好好看一遍题目

writeup_第22张图片

题目

最开始获取id时需要用urldecode解码(如果没有用url编码,解码还是原来的东西)

第一行的比较中,uname必须!=passwd才可以继续

第二次比较中,sha1是哈希算法,可以使用数组绕过

这样payload就比较简单了,这里我附上我的payload

writeup_第23张图片

payload

获得flag

web8

打开网页,附上源代码:

writeup_第24张图片

题上 的 代码

看到了熟悉的file_get_contents函数,可以使用php://input给fn赋值,ac直接赋值,然后使两个相等就可以了,知道题还是比较简单的,这里附上我的payload

writeup_第25张图片

我的payload

细心

    想办法变成admin

writeup_第26张图片

刚打开题目网页

看到题目吧,还是比较懵的,给的两个按钮点击有没有什么用,然后就看看网页呗。

题目的意思打开是在找文件或目录,这样我们先来看一下网页可以直接访问的文件有哪些:

writeup_第27张图片

一般网站都会有robots.txt文件的,存放可以直接访问的文件子目录

根据提示,在看看resusl.php文件

writeup_第28张图片

resusl.php

看到以后慌的一批,考虑换个ip做这道题,但是还是先看看不换ip能不能做

题目中的一个小提示是想办法变成admin,题目中需要获取x的值,自然想到直接将x赋值为admin,没想到直接就拿到了flag,这道题难度也不是很大。

求getshell

这道题是文件上传题,本来用菜刀做了一小会,然后bugku好像把菜刀给ban了。无奈,用burp来做这道题。然后直接上传菜刀中的一句话木马

123.php里面的 东西


    如果是walf严格匹配,通过修改Content-type后字母的大小写可以绕过检测,使得需要上传的文件可以到达服务器端,而服务器的容错率较高,一般我们上传的文件可以解析。然后就需要确定我们如何上传文件,这里将文件的后缀名改为.jpg和.png都不可行,在分别将后缀名修改为php2, php3, php4, php5, phps, pht, phtm, phtml(php的别名),发现只有php5没有被过滤,成功上传,得到flag

writeup_第29张图片

我滴payload


https://www.jianshu.com/p/6750db0943b7

你可能感兴趣的:(writeup)