0


CTF-Web入门wp-XCTF-(1-12)

CTF-Web入门wp-XCTF-(1-12)

本人也是刚入门ctf-web系列,写一点wp

另外提供两个学习ctf的网站Hello CTF (hello-ctf.com)和Web 简介 - CTF Wiki (ctf-wiki.org)

入门题目地址:攻防世界 (xctf.org.cn)

view_source

F12查看Flag

image-20241010144605924

get_post

使用HackBar get提交1 (execute)

image-20241010144740305

再post2

image-20241010144855172

得到flag

image-20241010144913828

robots

Training-WWW-Robots这题原理一致
题目提示robots协议,可以自行百度robots,应该是与爬虫相关的协议,可以尝试访问(同时也可以通过dirsearch扫描,dirsearch是一个目录扫描工具(kali上和windows上安装都行),安装自行百度)

image-20241010145108651

再访问f1ag_1s_h3re.php得到flag

image-20241010145120779

image-20241010150356122

backup

提问备份文件,百度查可得知备份是bak,可以直接访问index.php.bak,下载查看flag

image-20241010145416570

也可以直接扫描

image-20241010145937966

cookie

直接根据提示查cookie

image-20241010150603460

look-here=cookie.php,直接访问

让我们看响应,查的flag

image-20241010150648742

disabled_button

前端知识,disabled,直接改属性disabled去掉得flag,然后点击

image-20241010150725899

image-20241010150811445

simple_js

可能跟js有关

image-20241010151204588

随便输一个密码,挑战到错误页面,查看源代码,发现有js代码,进行代码审计

image-20241010151252188

先不管上面那个函数,看一下调用逻辑,其中\x代表16进制,字符串转换为10进制后:55,56,54,79,115,69,114,116,107,49,50

再调用了dechiffre函数,传入了输入的h

查看函数逻辑,整理下代码

functiondechiffre(pass_enc){var pass ="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";var tab  = pass_enc.split(',');var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p ="";i =0;j = tab.length;
         k = j +(l)+(n=0);
         n = tab2.length;for(i =(o=0); i <(k = j = n); i++){
             o = tab[i-l];
             p += String.fromCharCode((o = tab2[i]));if(i ==5)break;}for(i =(o=0); i <(k = j = n); i++){
              o = tab[i-l];if(i >5&& i < k-1) p += String.fromCharCode((o = tab2[i]));}
        p += String.fromCharCode(tab2[17]);
        pass = p;return pass;}

耐心看一下代码,可以发现tab是完全没用的,也就是你输入什么都没用,最终会被tab2覆盖o = tab2[i]

简化下代码:

functiondechiffre(){var pass ="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";var tab2 = pass.split(',');var i, n, p ="";
    n = tab2.length;for(i =0; i < n; i++){
        p += String.fromCharCode(tab2[i]);if(i ==5)break;}for(i =0; i < n; i++){if(i >5&& i < n -1) p += String.fromCharCode(tab2[i]);}
    p += String.fromCharCode(tab2[17]);return p;}

其实中间两个for循环,逻辑是在处理一个任务,可以合并,把最后的tab2[17]也合并进去,:

functiondechiffre(){var pass ="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";var tab2 = pass.split(',');var i;var p ="";for(i =0; i < tab2.length; i++){
        p += String.fromCharCode(tab2[i]);}return p;}

就逻辑上可见它只是将内容为逗号分隔的数字的字符串转成相应编码的字符串。

但是之前如果是pass字符串的话都是不通过,可以将那段可以字符串代替pass试试,可以跑一下脚本

s="\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(s)

得到[55,56,54,79,115,69,114,116,107,49,50],转成字符:786OsErtk12

a =[55,56,54,79,115,69,114,116,107,49,50]
c =""for i in a:
    b =chr(i)
    c = c + b
print(c)

因为题目提示(Flag格式为 Cyberpeace{xxxxxxxxx} )

做一个包裹就行,得到flag

xff_referer

题目提到xff-referer,可以先百度了解一下

**

X-Forwarded-For

**(XFF)请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。

HTTP 请求的头信息里面,

Referer

是一个常见字段,提供访问来源的信息。可以简单地理解为你从哪个网站过来的。

改xff

image-20241010153526532

改referer

image-20241010153603807

得到flag

weak_auth

题目提示是个弱口令,可以爆破

随便猜了下账号是admin,密码是123456,结果就出来了 0.0

image-20241010153753606

可以通过burp进行爆破(百度burp的作用,是什么)

https://github.com/rootphantomer/Blasting_dictionary/blob/master/常用密码.txt

这里提供一个字典,网上字典很多,自己搜就行,当然如果你一开始试错的话,他也提示了使用弱口令

image-20241010153946743

同时还要安装这个插件,(把所有能勾选的全部取消勾选,界面通用和导入里面)

image-20241010154120897

输入好账号密码后,切换到burp

image-20241010154348528

开启拦截,点击登录

image-20241010154410434

拦截到,右键发送到intruder

image-20241010154505114

选中密码部分,添加payload,在进入payload

image-20241010154553441

从文件中加载你的密码字典开始爆破

image-20241010154711414

查看长度(看看有没有独一无二的),和响应得到flag

image-20241010154831580

command_execution

ping一下127.0.0.1看看,这题题目是命令执行,也有暗示,ping 127.0.0.1出一下结果,可以看到ping- c 127.0.0.1,看看能不能插入其他命令,可以使用管道符号|,可以先了解一下管道符号|(百度),

image-20241010155009249

执行一下ping 127.0.0.1 | ls

image-20241010155232725

可以执行,ctf中flag一般藏在flag文件中,可以找一下

ping -c 3 127.0.0.1 | find / -type f -name '*flag*'

image-20241010155436276

| cat /home/flag.txt

执行一下查得flag

image-20241010155520035

simple_php

image-20241010155944791

代码审计,a要==0,a又要存在且不为0,b不能是数字,b又要>1234 看似有些矛盾

在php中存在弱比较:==(不比较类型)

而强比较(===)不仅比较值还比较类型

此外,如果一个字符为123a的话在比较中会被转化成123,a123则会被表示为0

所以可以构建payload:?a=abc&b=12345a就可以绕过

…(img-JN9GuvuQ-1728547588529)]

simple_php

[外链图片转存中…(img-1xYxcwiM-1728547588529)]

代码审计,a要==0,a又要存在且不为0,b不能是数字,b又要>1234 看似有些矛盾

在php中存在弱比较:==(不比较类型)

而强比较(===)不仅比较值还比较类型

此外,如果一个字符为123a的话在比较中会被转化成123,a123则会被表示为0

所以可以构建payload:?a=abc&b=12345a就可以绕过

image-20241010160535542

标签: 安全

本文转载自: https://blog.csdn.net/LH1013886337/article/details/142824532
版权归原作者 Coding~ 所有, 如有侵权,请联系我们删除。

“CTF-Web入门wp-XCTF-(1-12)”的评论:

还没有评论