在网络上做兼职的网站,网站推广的方法,百度图片识别在线识图,重庆开县网站建设报价view_source 此题我愿称之为网安领域的hello world
查看网页源代码的方式一般有——
右键-查看网页源代码F12-源代码/来源Ctrlu
随后可以再代码第17行处找到flag#xff0c;至此迈入网安第一步。可喜可贺#xff0c;可喜可贺... get_post 考察http的两种请求方式查看网页源代码F12-源代码/来源Ctrlu
随后可以再代码第17行处找到flag至此迈入网安第一步。可喜可贺可喜可贺... get_post 考察http的两种请求方式一种是get方式一种是post方式
get的提交方式为在网页的URL后面写个英文问号然后写变量表达式如下 提交完成后页面会更新并多一句话提醒用post方式提交变量b这时候需要借助hackbar插件了读者请自行查阅资料完成插件的安装 弄好插件后用快捷键F12进入开发者模式 如下 把该网页的URL复制到可以直接点LOADHackBar中的URL栏中打开【Use POST method】这个开关随后在Body中输入b2最后点击【EXECUTE】即可刷新页面并获得flag robots robots协议_百度百科 (baidu.com)
百度百科robots协议也称爬虫协议、爬虫规则等是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取哪些页面不能抓取而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。
简单来说我们知道网页其实就是服务器下的一个个文件robots.txt就是其中之一因此根据提示先直接去访问robots.txt这个文件看看能有什么新线索。访问方式就是在网页的URL后面加上/robots.txt
发现新页面是如下三行 第一行的User-agent: * 这里的*代表的所有的搜索引擎种类*是一个通配符第二行的Disallow: 后面无内容。第三行的Disallow: f1ag_1s_h3re.php表示禁止搜索引擎爬虫访问名为f1ag_1s_h3re.php的文件
通过访问robots.txt这个文件我们获取到的线索就是该服务器下还有一个文件叫f1ag_1s_h3re.php所以下一步就直接再去访问这个文件即可就像刚刚访问robots.txt那样做别忘了回到原来的父路径
访问后页面刷新获得flag backup 这题让找备份文件打开靶场后提示找的是index.php的备份文件这样就获得一个线索要知道备份文件的名字就是在原文件的名字加上后缀备份文件有以下几个常用后缀 .git .svn .swp .~ .bak .bash_history .bkf 因此第一种思路就是枚举去尝试访问index.php.gitindex.php.svn...等等这些文件当试到index.php.bak的时候网页会自动下载这个文件说明试到正确答案了 我们用记事本打开它可以轻松拿到flag 仅仅是这样的话就太浪费这题了交完flag后回来复盘
这题其实可以通过kali没装kali见本篇-linux的kali安装换源更新包-CSDN博客的工具dirsearch对该网页进行一个路径扫描一扫就知道这个网页路径下有什么文件了
使用命令【dirsearch -u URL】对指定路径进行扫描进度到60%左右时会出现index.php.bak这时可以Ctrlc提前结束扫描证明该路径下确实有这个文件然后进行访问即可
笔者是finalshell连接的kali系统用起来会比较顺手 cookie 按F12键进入开发者模式在【应用】中找到Cookie可以看到名为【look-here】的项其值为cookie.php因此线索为该路径下存在此文件 理所应当地去访问一下这个文件页面刷新了提示去看http response就去【网络】中找到【标头】在响应标头中能找到flag disabled_button 题目描述提到“前端知识”给出这题的线索应该是和前端代码有关打开靶场一句话加一个按钮点了点发现按钮确实按不了
那么F12进入开发者模式点一个这个我用绿色框框起来的【选中】按钮后把鼠标移动到按钮位置这样做可以快速定位这个按钮的代码位置 代码被定位到了下面绿色框起来的位置发现它是一个表单把它展开仔细观察发现其存在一个属性【disabled】这个属性会使该元素不可交互这就是按钮不可按下的主要原因了 把disabled属性删除按钮就能按了 按下按钮轻松获得flag
怎么说呢这题有点小学初中那会玩史上最坑爹的小游戏的既视感啊 simple_js 这题的难度相对于其它的题目都显得有点高比较吃做题人的经验经验不足就会手足无措
首先打开靶场测试了几下发现确实如题所说不管什么密码结果都提示这个 这时就应该换个思路比如去看看网页源代码、cookie、http response...等等找找线索显然在源代码中我们能提取到不少信息
说实话笔者写这里时也只是个ctf小白不是很能看懂这个代码但能根据一点编程经验猜个大概
主要是由一个自定义函数dechiffre红框部分和3行代码绿框部分函数在未调用时不会起作用所以先从绿框的3行代码入手 第22行代码
String[fromCharCode](dechiffre(\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30));
这行代码先调用上面红框自定义的dechiffre函数传入一个字符串看这个字符串的格式大概猜得到是16进制编码dechiffre函数会经过它的逻辑后返回一个字符串A然后String[fromCharCode] 函数JavaScript的API把字符串A转换为字符串B除此之外这行代码似乎并没有对其它什么参数有造成影响那就先放着...吧
第24行代码
h window.prompt(Enter password);
这行代码调用一个名为window.prompt的API其作用是指示浏览器显示一个对话框用来提示用户输入一些相关信息也就是打开靶场后显示的这个密码框
接下来的逻辑是把用户输入的密码赋值给变量h这就是第24行代码的所有作用了 第25行代码
alert( dechiffre(h) );
这行代码调用alert函数把其中的参数作为“警告”提示在屏幕而所谓的参数是通过调用函数dechiffre(h)来获得的一个字符串
自此我们终于理清楚了调用链
首先调用dechiffre(h)h来自用户输入然而我们只用稍微看看dechiffre函数的逻辑就能明白它返回的字符串跟传入的这个h参数根本没关系而是固定返回一个字符串FAUX PASSWORD HAHA所以不管输入什么密码最后显示的结果都是这句话
到了这步其实仅仅是把这个网页所谓的“bug”给理清楚了但似乎对解题依旧没什么进展
所以还是得换换思路多写几道ctf题目其实不难总结出经验所谓的flag就是被出题人藏在各种地方但不一定以明文的形式展示也可能是密文
而这题的flag就被藏在源代码中的第22行甚至可以说其它都是无关信息这一大串的十六进制编码就是密文形式的flag需要做题人自行想办法去解码 因此接下来的工作就是写一个脚本去解码写这种脚本最好是用python而不是c、c等后者会很麻烦随便一个字符串转整数就要写一大段算法代码难顶...
接下来是脚本的编写教学不想看的自行跳过即可——
①首先把这串十六进制编码打印出来python识别到非十进制格式的编码时会自动转成十进制输出因此得到以下结果 ②通过输出的结果合理猜测这是一串ASCII编码我们将其转为对应的字符或许就能拿到flag但也得进行一些相应的操作首先把原字符串按逗号分割成字串得到对应的列表这里再把列表也打印一下验证正确性 ③循环遍历列表list对于每个元素采取两次类型转换先转为整型int再转为字符型chrpython的字符型是chr而不是char即可获得编码对应的字符所有字符连在一起组成了本题的flag按题目要求的格式把flag包裹起来提交即可 Cyberpeace{786OsErtk12} 完整脚本
str \x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
print(str)
list str.split(,)
print(list)
for i in list:print(chr(int(i)), end)#对每个元素先转int再转chr后输出print以空字符连接下次输出不换行的意思 xff_referer 百度百科 X-Forwarded-For_百度百科 (baidu.com) HTTP_REFERER_百度百科 (baidu.com) X-Forwarded-ForXFF是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 HTTP Referer是header的一部分当浏览器向web服务器发送请求的时候一般会带上Referer告诉服务器该网页是从哪个页面链接过来的服务器因此可以获得一些信息用于处理。 简单理解 xff用来记录用户真实ip以及代理服务器的ip。
referer用来记录当前网页是从哪个链接过来的。
以上两个属性都是可以伪造的 打开靶机页面显示说“ip必须来自123.123.123.123” 因此第一步去构造xff
【F12】进入开发者模式-【HackBar】-【LOAD】把当前URL加载进插件-
【MODIFY HEADER】修改头部这里先按要求伪造一个xff值为123.123.123.123-【EXECUTE】发包后可以看见页面刷新新的信息显示“必须来自https://www.google.com” 因此第二步去构造referer
【MODIFY HEADER】修改头部这里按要求构造一个referer值为https://www.google.com-
【EXECUTE】发包后可以看见页面刷新获得本题flag weak_auth weak auth是弱口令、弱认证的意思打开靶机显示的是一个登录页面 先尝试性地随意输入一个账号密码结果显示“please login as admin” 即让我们用admin作为账号去登录 现在知道账号是admin了那密码呢不知道但是题目提示我们了是“弱认证”即密码安全性极低因为我们采用字典爆破把正确密码试出来
①开启burp代理使用burp抓包admin是账号先随便输入一个密码 ②右键【Send to Intruder】使用burp进行爆破的操作 ③选中密码的文本选中文本时要注意burp似乎有点错位选中的与实际相比前面少一个字符后面多一个字符所以选中文本过程要注意一点。。。-【Add】添加需要爆破的position ④【Payloads】-【Load ...】把本地备好的字典网上随手一搜有一堆加载进burp ⑤按下【Start attack】开始爆破 ⑥把结果按照【Length】倒序排列发现密码为123456的回复包的长度最长说明有问题查看Response获得flag ⑦也可以回到靶场【账号admin 密码123456】登录后页面刷新获得flag command_execution 百度百科WAF_百度百科 (baidu.com) Web应用防护系统也称为网站应用级入侵防御系统。英文Web Application Firewall简称 WAF。利用国际上公认的一种说法Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。 打开靶机显示的是一个具有ping功能的页面 随意ping了一下比较简单的地址这里通过显示的信息可以得知该靶场基于Linux操作系统 本题题目描述说没有waf可以理解为对于用户的命令不作安全性判断借此可以利用Linux的管道符命令语法进行命令拼接原理介绍
在管道符左边的命令结束后会将左边命令的结果作为输入立即执行右边的命令例如这边的ls是指列出当前目录的文件夹和文件 因此利用这个语法特性去进行命令拼接查看靶机的工作目录下存放了哪些文件由此获得线索
输入【ping w | ls】命令这里的w是什么根本不重要我们的目的是借助管道符拼接其后的命令【ls】可以看见有名为【index.php】的条目被列举出来 顺理成章地去访问一下此文件发现页面刷新了一下但内容没变看来flag被藏在其它目录下我们直接借助find函数去全局查找含有flag字样的文件 如法炮制输入命令【ping w | find / -name *flag* 】
find后面的/意味根目录linux系统中根目录是最高级的父目录-name表示按名字查找指定文件*flag*即名字中含有flag的文件可以看到查找结果中显然是第一个【/home/flag.txt】最有可能是我们的目标文件 再次拼接命令这次我们要访问【/home/flag.txt】这个路径的文件
输入命令【ping w | cat /home/flag.txt】这里cat的作用是访问文件
访问结果拿下flag simple_php 本题考察简单php代码分析打开靶机就是一段php代码 下面是代码分析
?php
show_source(__FILE__);//将当前文件的代码显示出来
include(config.php);//加载自定义配置文件
$a$_GET[a];//get方式传入的参数a将赋值给变量$a
$b$_GET[b];//get方式传入的参数b将赋值给变量$b
if($a0 and $a){echo $flag1;//重点1如果$a弱等于0并且$a为真将输出$flag1
}
if(is_numeric($b)){exit();//如果$b是数字程序将直接结束
}
if($b1234){echo $flag2;//重点2如果$b大于1234将输出$flag2
}
?分析完代码后可以得出get方式传入一个参数aa要满足本身为true且a弱等于0查看php弱相等表php比较运算强相等弱相等表-CSDN博客 因此我们先传入一个a任意字符串即可传参方式为在URL后面输入【?axxx】可以看见传参后页面显示出了flag的前半部分 接下来是b的参数分析得出b不能是数字否则会进入第二个if逻辑导致程序直接结束又要满足b大于1234进入第三个if逻辑获取下半的flag
必须输入一个字符串绕过第二个if逻辑然后涉及到字符串的类型转换见本篇string类型转整型int或者浮点型float/double-php基础学习之数据类型-CSDN博客 因此我们输入【b1235a】即可同时提交多个变量用符号连接1235a本身被php识别为字符串在与1234进行比较时进行类型转换1235a变为123512351234条件为真输入第二段flag与第一段flag组成本题flag