【ctfshow】_萌新 web2 web3

本文讲述了在CTF挑战中,如何针对不同的SQL注入防护措施,如正则表达式过滤,通过构造特殊字符、利用数学运算和错误消息泄露等方式,绕过限制进行攻击。
摘要由CSDN通过智能技术生成

网址:ctf.show

进入靶场

上接第一题的知识点 

这里有一个很明显的区别

if(preg_match("/or|\+/i",$id)){
            die("id error");
    }

这题的要点就多了一个:

如何绕过 `preg_match("/or|\+/i", $id)` 这一正则表达式的限制,从而尝试进行 SQL 注入攻击

说明:

正则表达式 `"/or|\+/i"` 的作用是检查 `$id` 变量是否包含 `or` 或 `+` 字符。如果包含其中任意一个字符,程序将输出 "id error" 并终止执行。这是一个基本的 SQL 注入防护措施,目的是防止用户输入恶意的 SQL 查询语句。

为了绕过这个限制,需要构造一个有效的 `$id` 参数,可以通过乘法来尝试绕过:

?id=2*500

到了这里,你会发现,其实这种题目有各种各样的解法,

继续再来第三题

限制又双不一样了

 if(preg_match("/or|\-|\\|\*|\<|\>|\!|x|hex|\+/i",$id)){
            die("id error");
    }

程序现在对输入的 `id` 参数进行了更加严格的过滤,包括对一些特殊字符的检测,如 `-`, `\`, `*`, `<`, `>`, `!`, `x`, `hex`, `+` 等等。如果输入的 `id` 参数包含这些特殊字符中的任何一个,程序都会输出 "id error" 并终止执行。

这是一种更加严格的防御措施,目的是防止恶意用户通过各种方式尝试绕过输入过滤来进行 SQL 注入攻击。

要绕过这种过滤,您需要仔细分析过滤规则并找到相应的漏洞。以下是一些可能的思路:

1. 绕过特殊字符检测: 您可以尝试使用一些绕过技巧来绕过对特殊字符的检测。例如,使用 URL 编码、十六进制编码、Unicode 编码等来隐藏特殊字符。

2. 利用 SQL 注入漏洞: 如果程序的其他部分存在 SQL 注入漏洞,您可以尝试利用这些漏洞来执行恶意 SQL 查询。例如,通过绕过对数字大小的检查,使得程序接受输入的 `id` 参数为非数字,然后构造恶意的 SQL 查询。

3. 利用错误消息泄露:如果程序存在错误消息泄露,您可以尝试通过构造恶意输入来触发错误,从而获取更多的信息或者利用漏洞。

就是找bug呗

之前用的or不行,*也不行

还有/除法啊,还有取反啊

首先写取反是可以得到的

10/0.01=1000,所以

如鱼得水嘿嘿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值