Loading

关于ctf.show中萌新web1-8

这些题基本上都是一个思路,就是如何将id=1000的指令输入到网页中,因为提示很明显了,id=1000的数据就是我们所需要的flag
但是作为一个题目,肯定不可能让我们直接输入id=1000
显然,它设置了过滤条件,而且从web1往后过滤条件越来越多
所以,如果你知道的绕过方法恰好不在前几个题中,那就可以一招鲜吃遍天了
下面总结一下遇到的绕过方法

一、web1~4

·web1
代码审计,要求发送GET请求使id参数为1000即可得到flag,然而需要绕过if下的intval()函数,大于999直接报错。由于PHP是弱语言,此处有两种思路:

  • 逻辑或:?id=999 or id=1000,?id=999 || id=1000
  • 加号:?id=999+1

·web2
相比上一题,加入了正则表达式过滤了or和加号,并且忽略了大小写,还有其他方法可以绕过intval()

  • 减号:?id=999- -1减负数得到1000

  • 除号:?id=500/(1/2)

  • 乘号:?id=500*2

  • 或运算符:?id=999 || id=1000

  • 左移运算符:?id=500<<1,左移一位表示乘二

  • 十六进制数:?id=0x3e8,intval()函数默认使用十进制,传入十六进制数时得到的值是0,因此可以传入十六进制的1000
    ·web3
    过滤了or、减号、除号、乘号、左移、右移、感叹号、x、hex、加号

  • sql注入:?id=500 union select * from article where id=1000 (sql注入暂时还不太会)

  • 逻辑或:?id=500 || id=1000
    ·web4
    过滤了or、减号、除号、乘号、左移、右移、感叹号、x、hex、加号、括号、select、|/

  • 逻辑或:?id=500 || id=1000

  • 字符串:?id=“1000”

二、web5~8

·web5
过滤了or、减号、除号、乘号、左移、右移、感叹号、x、hex、加号、括号、select、|/、单双引号、竖线

  • 异或运算符:?id=328^672

  • 非运算符:?id=~~1000

  • 二进制:?id=0b1111101000(0b是二进制数的前缀,和十六进制的0x类似)
    ·web6
    过滤了or、减号、除号、乘号、左移、右移、感叹号、x、hex、加号、括号、select、|/、单双引号、竖线、异或运算符

  • 非运算符:?id=~~1000

  • 二进制:?id=0b1111101000
    ·web7
    过滤了or、减号、除号、乘号、左移、右移、感叹号、x、hex、加号、括号、select、|/、单双引号、竖线、异或运算符以及非运算符
    可以考虑用二进制的方法解决
    web8没咋看懂

posted @ 2024-02-19 15:03  Tperm  阅读(43)  评论(0)    收藏  举报