CTF web题型总结-第五课 CTF WEB实战练习(一)

2020-08-14 111,168

image.png

继上一篇总结:

CTF web题型解题技巧-第四课 web总结

之后是我在bugku练习的解题过程

 

以下内容大多是我在Bugku自己操作练习有部分来源于网络,我只是在前人的基础上,对CET WEB进行一个总结;

-----------------------------------------------------------------------

-----------------------------------------------------------------------

入门第一部分 

今日入门13题

image.png 

bugku-ctf 第一题:web2

image.png 

 

复制链接,打开http://123.206.87.240:8002/web2/

image.png 

打开后是一个动图,看的我眩晕

对于一个小白来说,看到这个图真的是一脸懵。。。。。。

然后想到我前天分享的,ctf web常见解题思路:直接查看页面源代码,既可以找到flag

F12,果然

image.png 

flag KEY{Web-2-bugKssNNikls9100}

 

bugku-ctf 第二题:计算器

image.png 

依然是打开地址

 

image.png 

是一个计算器,59+72,填写答案验证

填写答案时发现只能输入一个数字

image.png 

查看页面源码,看前段限制。F12

image.png 

限制长度,把数字1改大,我们改成10

image.png 

然后再填写59+73的答案

image.png 

任何前端的限制都是不安全的

得到flag{CTF-bugku-0032}

bugku-ctf 第三题:web基础$_GET

image.png 

依旧是访问连接

image.png 

这个确实是基础,在get请求时,传入参数形式是在url后面加  ?参数=值。多个参数用  ?参数1=1&参数2=1……

源代码含义:

$what=$_GET['what'];//读取参数what,把值存到变量what

echo$what;     //输出

if($what=='flag')//如果值是flag

echo 'flag{****}';//打印flag

 

payload

image.png 

flag{bugku_get_su8kej2en}

 

bugku-ctf 第四题:web基础$_POST

image.png 

这个题可以和上一个联系起来,上一个是get请求,这个是post请求。

POST请求没办法写在url里,需要用hackbar或者burp修改,格式就是在最下面Content里写 参数1=&参数2=

如果用hackbar就没这么麻烦了,直接在框里填就行。

image.png 

flag{bugku_get_ssseint67se}

 

bugku-ctf 第五题:矛盾

image.png 

http://123.206.87.240:8002/get/index1.php

依旧是打开连接

image.png 

image.png 

这个要求不是数字且为1,有点矛盾是不是?其实有绕过的办法。下面num==1的判定是两个等号,这是弱类型比较,如果等号两边类型不同,会转换成相同类型再比较。与之对应的是强类型比较,用的是三个等号===,如果类型不同就直接不相等了。在弱类型比较下,当一个字符串与数字比较时,会把字符串转换成数字,具体是保留字母前的数字。例如123ab7c会转成123ab7c会转成0.(字母前没数字就是0

 

所以payload

http://123.206.87.240:8002/get/index1.php?num=1a

image.png 

flag{bugku-789-ps-ssdf}

 

bugku-ctf 第六题:web3

image.png 

依旧是打开连接

image.png 

查看页面源代码发现有一串这样的字符串

image.png 

KEY{J2sa42ahJK-HS11III}

#104;JK-HS11III}

复制出来粘贴到burp自带的decoder里,在decode as HTML,就能解码出flag

image.png 

KEY{J2sa42ahJK-HS11III}

 

bugku-ctf 第七题:域名解析

image.png 

域名解析是指把一个域名指向一个ip,就像通讯录把姓名指向一个电话一样,可以免去记数字的麻烦。

ip访问,抓包,把host字段直接改成域名。

image.png 

image.png 

得到flagKEY{DSAHDSJ82HDS2211}

 

bugku-ctf 第八题:你必须让他停下

image.png 

访问域名http://123.206.87.240:8002/web12/

image.png 

正常在浏览器里是没办法停的,但是可以在burp里达到单步执行的效果

抓包后发到repeater,每点一次Go就会刷新,等到右边相应<img src="10.jpg"时就可以显示flag了,多刷新几次就好了

但是我并没有抓取成功。

还有一个办法就是用Burpsuite看他的每个数据包:

image.png 

flag{dummy_game_1s_s0_popular}

 

bugku-ctf 第九题:变量1

image.png 

http://123.206.87.240:8004/index1.php

打开后得到代码如下

image.png 

这是一个代码审计的题目

需要传入有个args参数,通过eval来执行var_dump来打印一些东西。但是它打印的是$$args而不是$args

$$args'的分析:

image.png 

有了这个例子,就可以操作了。传入的是args参数,而传入的参数将会被当作一个变量名并打印它的变量值。比如传入一个x。则有$args=x,而执行var_dump($$args)时相当于执行var_dump($x),而此时程序里没有x这个变量,所以就会返回一个NULL值显示在浏览器上,这变量没有意义。所以传入的参数得是一个有意义的变量,PHP恰好有这类似的东西,如$GLOBALS,$_GET,$POST...$GLOBALS这个变量存储了所有的变量。所以传入参数‘args=GLOBALS'var_dump()将打印$GLOBALSflag就在返回的结果中。

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

image.png 

flag{92853051ab894a64f7865cf3c2128b34}

 

bugku-ctf 第十题:web5

image.png 

访问http://123.206.87.240:8002/web5/

看一看源代码吧,有一行非常奇怪的由+[]()!组成的代码,查了一下,这种东西似乎叫做jspfuck(呼应题目)

JSFuck(或为了避讳脏话写作 JSF*ck )是一种深奥的 JavaScript编程风格。以这种风格写成的代码中仅使用 []()!  + 六种字符。此编程风格的名字派生自仅使用较少符号写代码的Brainfuck语言。与其他深奥的编程语言不同,以JSFuck风格写出的代码不需要另外的编译器或解释器来执行,无论浏览器或JavaScript引擎中的原生 JavaScript 解释器皆可直接运行。鉴于JavaScript 是弱类型语言,编写者可以用数量有限的字符重写 JavaScript 中的所有功能,且可以用这种方式执行任何类型的表达式。

简单地说,就是有人不想让自己的代码被别人认出来,用6种字符改造了自己的js代码,浏览器居然还能识别(惊了)

所以说直接把这段奇怪的代码扔进chrome控制台,就可以得到flag了(记得要全变成大写

image.png 

ctf{whatfk}

字母大写:CTF{WHATFK}

 

bugku-ctf 第十一题:头等舱

访问http://123.206.87.240:9009/hd.php

image.png 

打开链接,什么都没有,真的是什么都没有

查看源代码也是什么也没有

image.png 

那就抓包看看

image.png 

也没有,emm

再回去看看题目,头等舱,头等舱,头等舱,响应头???!!!

放到Repeater里面,Go以下,Response里面已经出来flag

image.png 

flag{Bugku_k8_23s_istra}

 

bugku-ctf 第十二题:网站被黑

http://123.206.87.240:8002/webshell/

image.png 

打开链接是一个黑页,链接后面加index.php判断是PHP,而题目提示实战中经常遇到,那就开御剑扫描后台吧

image.png

扫描出shell.php,打开链接是一个webshell,尝试admin等弱密码无效后

image.png 

burp进行爆破,这里选择Simple list,字典选择burp自带的Passwords

image.png 

成功爆破,密码就是hack

image.png 

登录webshellflag出现

image.png 

flag{hack_bug_ku035}

 

 

bugku-ctf 第十三题:管理员系统

image.png 

http://123.206.31.85:1003/

登陆界面

image.png 

习惯性先看看页面源码吧,发现一段Base64,解码得test123

image.png 

因为是管理员,账号必然是admin,密码解密test123.

登陆下提示ip已经被限制

image.png 

看到ipban,就想在网上查一下怎样伪造ip地址,然后在网上查到了X-FORWARDED-FOR:127.0.0.1

输入账号密码admin test123,然后Burpsuite抓包

在数据包中加入X-Forwarded-For: 127.0.0.1,得到flag

image.png 

85ff2ee4171396724bae20c0bd851f6

flag{85ff2ee4171396724bae20c0bd851f6b}

 

入门第二部分 

bugku-ctf 第一题:web4 (看看源代码吧)

image.png 

访问题目中链接

image.png 

随便输入 111 点击Submit

image.png 

听他的,看看源代码吧

image.png 

那么明显的两行

image.png 

进行 unescape解密,得到

function checkSubmit(){vara=document.getElementById("password");if("undefined"!=typeofa){if("67d709b2b

aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQues

解码出来的东西,你可能还是看不懂,那我们在回到源码中,源码中有这么一句:eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));这句代码的含义是:p1串的编码+‘%35%34%61%61%32’的编码+p2串的编码。这是一个拼接的字符串,解码之后,拼接完成,回到网页中提交,网页直接爆出了flag。

 

67d709b2b 54aa2  aa648cf6e87a7114f1

拼接完成,回到网页中提交,网页直接爆出了flag:67d709b2b54aa2aa648cf6e87a7114f1

image.png 

KEY{J22JK-HS11}

 

bugku-ctf 第二题:flag在index里

image.png 

访问链接

image.png 

点击后

image.png 

注意到url地址 http://120.24.86.145:8005/post/index.php?file=show.php

这是一个典型的文件包含漏洞,(file关键字是提示,其实也是CTF的套路)。

这里用到了php的封装协议:http://php.net/manual/zh/wrappers.php.php

具体怎么用呢,先说结果:

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

image.png 

然后将得到的字符串base64解码得到index的源码:

image.png 

得到flagflag{edulcni_elif_lacol_si_siht}

***具体说说

file=php://filter/read=convert.base64-encode/resource=index.php的含义

首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php

通过传递这个参数可以得到index.php的源码,下面说说为什么,看到源码中的include函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。

include的内容是由用户控制的,所以通过我们传递的file参数,是include()函数引入了index.phpbase64编码格式,因为是base64编码格式,所以执行不成功,返回源码,所以我们得到了源码的base64格式,解码即可。

如果不进行base64编码传入,就会直接执行,而flag的信息在注释中,是得不到的。

我们再看一下源码中 存在对 ../ tp data input 的过滤,其实这都是php://协议中的其他方法,都可以结合文件包含漏洞执行,具体可以百度一下。

 

bugku-ctf 第三题:输入密码查看flag

http://123.206.87.240:8002/baopo/

image.png 

image.png 

image.png 

输入密码提示不正确,5位数,那就burp暴力破解

image.png 

paobo 很明显的提示

burpsuite爆破截图没留,直接爆破出的答案是13579

输入后得出flag

image.png 

flag{bugku-baopo-hah}

 

bugku-ctf 第四题:点击一万次

题目如下:

image.png 

image.png 

每次点击goal的分子会改变,右键查看源代码

主要查看js部分

image.png 

抓包看一下,其实每次点击只是修改了click的值,并没有跳到新的网页

将头部get修改为post,加上click参数发过去

image.png 

image.png 

flag{Not_C00kl3Cl1ck3r}

 

bugku-ctf 第五题:备份是个好习惯

image.png 

image.png 

通过提示 关键词备份可以联想到   备份文件

备份文件一般都是.bak结尾的

用工具扫一下

这里推荐大佬的工具  yihangwang/SourceLeakHacker

image.png 

可以看到index.php.bak

访问一下试试

image.png 

有一个bak备份文件 ,不多解释了,下载后打开

image.png 

image.png 

11行  strstr 获得URI'?'往后(包括'?')的字符串         stristr strstr用法一样,不区分大小写

12行  substr 去掉'?'

13行  str_replace 把字符串中的'key'替换为空可以使用类似这样的语句:kkeyey 处理

14行  parse_str 把字符串解析到变量中

end 最后需要得到key1,key2不相等而二者md5相等,可以利用php弱类型比较绕过

php弱类

  https://www.cnblogs.com/Mrsm1th/p/6745532.html

https://cloud.tencent.com/developer/article/1046701

这里稍微提一下php弱类#

首先,我们一般说php变量类型8

标量类型:布尔boolean,整形integer,浮点float,字符string

复杂类型:数组array,对象object

特殊类型:资源resource,空null

 

与别的语言不同,php是一个弱类型的语言

==表示的是等于 ,只要数值等于就可以了,类型无所谓的

就是说上面列举的那些类型 之间相互比较  只看值就行了 不用看类型

 

php弱类型语言总的类型判断#

php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。

PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0

 

那么回过头来看题目(-_-)

这一题需要构造的是 $key1 == $key2#

构造的要求是md5值相同,但未计算md5的值不同的绕过。

那我们就来构造 O(_)O

 

介绍一批md5开头是0e的字符串,

0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,

0的多少次方还是0md5('240610708') == md5('QNKCDZO')成功绕过!

QNKCDZO

0e830400451993494058024219903391

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

 

构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708

页面得到Bugku{OH_YOU_FIND_MY_MOMY}


本文作者:Lemon

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/137663.html

Tags:
评论  (0)
快来写下你的想法吧!

Lemon

文章数:68 积分: 647

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号