极客大挑战 2019
Web
BuyFlag
通过查看 index.php
源代码可以发现 pay.php
,通过查看 pay.php
源代码可以发现以下内容
通过构造 payload password="404"
发现并没有什么反应,然后继续在 NetWork 里面寻找答案。在寻找的过程中,发现 Request Headers 内包含 Cookie user=0
,故尝试修改为 user=1
后出现新提示 Wrong Password。因此重新构造 payload password=404a
发现成功力,但是提示需要给钱(
is_numeric() 函数用于检测变量是否为数字或数字字符串
但当一个整型和一个其他类型行比较的时候,会先把其他类型数字化再比,因此可以通过空字符
%00
或字母实现绕过strcmp() 函数用于比较两个字符串
若传入的参数为数组则返回 NULL ,NULL==0 为 bool(true),因此可以通过传入数组进行绕过
尝试构造 payload money=100000000
发现提示 Nember lenth is too long,故修改 payload 为 money[]=1
FinalSQL
通过测试发现并不存在单双引号,空格、and
也被过滤了,/**/
绕过也不行,并不存在报错注入,尝试布尔注入。
可以得到表名 F1naI1y,Flaaaaag
,通过修改 data 如下
可以得到列名 id,fl4gawsl
,通过修改 data 如下
得到回显 NO!!Not!this!!Click!others~~~,yingyingying
,看来被骗了,那就修改 data 如下
得到回显 id,username,password
,通过修改 data 如下
得到回显 mygod,welcome,site,site,site,site,Syc,finally,flag
,看来离成功更进一步了(确信),修改 data 如下
得到回显 flag{301e4296-b8db-462e-a4e0-6253e9b8dafe}
。
RCE ME
题目如下。
限制条件如下:
Payload 长度不超过 40 ;
Payload 不包含数字和字母。
因此尝试用取反 URLEncode 编码绕过,通过以下方式构造 Payload 。
即可通过蚁剑发现文件 readflag
,但是它是一个文件并且通过蚁剑的 shell 无法执行,猜测需要绕过 disable functions ,先构造 Payload 如下来找出 disable functions 的值。
可以得到被禁用的方法如下:
pcntl_alarm
pcntl_fork
pcntl_waitpid
pcntl_wait
pcntl_wifexited
pcntl_wifstopped
pcntl_wifsignaled
pcntl_wifcontinued
pcntl_wexitstatus
pcntl_wtermsig
pcntl_wstopsig
pcntl_signal
pcntl_signal_get_handler
pcntl_signal_dispatch
pcntl_get_last_error
pcntl_strerror
pcntl_sigprocmask
pcntl_sigwaitinfo
pcntl_sigtimedwait
pcntl_exec
pcntl_getpriority
pcntl_setpriority
pcntl_async_signals
system
exec
shell_exec
popen
proc_open
passthru
symlink
link
syslog
imap_open
ld
dl
可以利用环境变量 LD_PRELOAD 劫持系统函数,让外部程序加载恶意 *.so ,达到执行系统命令的效果,先编写恶意类如下。
通过以下命令进行编译为共享对象。
将该恶意文件上传至 /tmp
中,并构造 Payload 如下。
之后就能在蚁剑通过查看 /tmp/readflag
得到 flag 。
Last updated