Excel@Macで取り消し線

表題の通り。単なるメモである。

■ 環境

  • Microsoft Excell
  • macOS High Sierra

■ 取り消し線

文章の一部に”取り消し線“を付けたかったのだが、メニューのリボンを探しても見つからない…。さてどこにあるのだろう?と探し回ってしまったのでメモしておく。

ちなみに探していないので他にもっと速いショートカット等があるかもしれない。

取り消し線“を付けたいセルや文字列を選択後に、”command + 1“で”セルの書式設定”を開く。

フォント > 文字飾り > 取り消し線“にチェックを入れる。

以上。

exploitdb

表題について。`brew`で検索していて”exploitdb“なるものがあるのに気が付いたので触ってみる。

■ 環境

  • exploitdb
  • Homebrew
  • macOS High Sierra

■ exploitdb

$ brew info exploitdb
exploitdb: stable 2018-04-05, HEAD
The official Exploit Database
https://www.exploit-db.com/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/exploitdb.rb
==> Options
--HEAD
    Install HEAD version
$

exploitdb“ってあれだよな?と思って`info`で表示されるURLを訪れてみたが、イメージ通りであった。インストールすると何かあるのか?

$ brew install exploitdb

さて何がインストールされたのであろう。

$ brew ls exploitdb
/usr/local/Cellar/exploitdb/2018-04-05/bin/searchsploit
/usr/local/Cellar/exploitdb/2018-04-05/share/exploit-database/ (39996 files)
$

`searchsploit`はコマンドであろうし、名前からイメージがつく。

$ searchsploit -h
  Usage: searchsploit [options] term1 [term2] ... [termN]

==========
 Examples
==========
  searchsploit afd windows local
  searchsploit -t oracle windows
  searchsploit -p 39446
  searchsploit linux kernel 3.2 --exclude="(PoC)|/dos/"

  For more examples, see the manual: https://www.exploit-db.com/searchsploit/

=========
 Options
=========
   -c, --case     [Term]      Perform a case-sensitive search (Default is inSEnsITiVe).
   -e, --exact    [Term]      Perform an EXACT match on exploit title (Default is AND) [Implies "-t"].
   -h, --help                 Show this help screen.
   -j, --json     [Term]      Show result in JSON format.
   -m, --mirror   [EDB-ID]    Mirror (aka copies) an exploit to the current working directory.
   -o, --overflow [Term]      Exploit titles are allowed to overflow their columns.
   -p, --path     [EDB-ID]    Show the full path to an exploit (and also copies the path to the clipboard if possible).
   -t, --title    [Term]      Search JUST the exploit title (Default is title AND the file's path).
   -u, --update               Check for and install any exploitdb package updates (deb or git).
   -w, --www      [Term]      Show URLs to Exploit-DB.com rather than the local path.
   -x, --examine  [EDB-ID]    Examine (aka opens) the exploit using $PAGER.
       --colour               Disable colour highlighting in search results.
       --id                   Display the EDB-ID value rather than local path.
       --nmap     [file.xml]  Checks all results in Nmap's XML output with service version (e.g.: nmap -sV -oX file.xml).
                                Use "-v" (verbose) to try even more combinations
       --exclude="term"       Remove values from results. By using "|" to separated you can chain multiple values.
                                e.g. --exclude="term1|term2|term3".

=======
 Notes
=======
 * You can use any number of search terms.
 * Search terms are not case-sensitive (by default), and ordering is irrelevant.
   * Use '-c' if you wish to reduce results by case-sensitive searching.
   * And/Or '-e' if you wish to filter results by using an exact match.
 * Use '-t' to exclude the file's path to filter the search results.
   * Remove false positives (especially when searching using numbers - i.e. versions).
 * When updating or displaying help, search terms will be ignored.

$

試しに最近話題になった”drupal“でやってみる。

$ searchsploit drupal
------------------------------------------------------------------- -------------------------------------------------------------------
 Exploit Title                                                     |  Path
                                                                   | (/usr/local/opt/exploitdb/share/exploit-database/)
------------------------------------------------------------------- -------------------------------------------------------------------
Drupal 4.0 - News Message HTML Injection                           | exploits/php/webapps/21863.txt
Drupal 4.1/4.2 - Cross-Site Scripting                              | exploits/php/webapps/22940.txt
Drupal 4.5.3 < 4.6.1 - Comments PHP Injection                      | exploits/php/webapps/1088.pl
Drupal 4.7 - 'Attachment mod_mime' Remote Command Execution        | exploits/php/webapps/1821.php
Drupal 4.x - URL-Encoded Input HTML Injection                      | exploits/php/webapps/27020.txt
Drupal 5.2 - PHP Zend Hash ation Vector                            | exploits/php/webapps/4510.txt
Drupal 5.21/6.16 - Denial of Service                               | exploits/php/dos/10826.sh
Drupal 6.15 - Multiple Persistent Cross-Site Scripting Vulnerabili | exploits/php/webapps/11060.txt
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (Add Admin User)  | exploits/php/webapps/34992.py
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (Admin Session)   | exploits/php/webapps/44355.php
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (PoC) (Reset Pass | exploits/php/webapps/34984.py
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (PoC) (Reset Pass | exploits/php/webapps/34993.php
Drupal 7.0 < 7.31 - 'Drupalgeddon' SQL Injection (Remote Code Exec | exploits/php/webapps/35150.php
Drupal 7.12 - Multiple Vulnerabilities                             | exploits/php/webapps/18564.txt
Drupal 7.x Module Services - Remote Code Execution                 | exploits/php/webapps/41564.php
Drupal < 4.7.6 - Post Comments Remote Command Execution            | exploits/php/webapps/3313.pl
Drupal < 5.1 - Post Comments Remote Command Execution              | exploits/php/webapps/3312.pl
Drupal < 5.22/6.16 - Multiple Vulnerabilities                      | exploits/php/webapps/33706.txt
Drupal < 7.34 - Denial of Service                                  | exploits/php/dos/35415.txt
Drupal Module Ajax Checklist 5.x-1.0 - Multiple SQL Injections     | exploits/php/webapps/32415.txt
Drupal Module CAPTCHA - Security Bypass                            | exploits/php/webapps/35335.html
Drupal Module CKEditor 3.0 < 3.6.2 - Persistent EventHandler Cross | exploits/php/webapps/18389.txt
Drupal Module CKEditor < 4.1WYSIWYG (Drupal 6.x/7.x) - Persistent  | exploits/php/webapps/25493.txt
Drupal Module CODER 2.5 - Remote Command Execution (Metasploit)    | exploits/php/webapps/40149.rb
Drupal Module Coder < 7.x-1.3/7.x-2.6 - Remote Code Execution      | exploits/php/remote/40144.php
Drupal Module Cumulus 5.x-1.1/6.x-1.4 - 'tagcloud' Cross-Site Scri | exploits/php/webapps/35397.txt
Drupal Module Drag & Drop Gallery 6.x-1.5 - 'upload.php' Arbitrary | exploits/php/webapps/37453.php
Drupal Module Embedded Media Field/Media 6.x : Video Flotsam/Media | exploits/php/webapps/35072.txt
Drupal Module RESTWS 7.x - PHP Remote Code Execution (Metasploit)  | exploits/php/remote/40130.rb
Drupal Module Sections - Cross-Site Scripting                      | exploits/php/webapps/10485.txt
Drupal Module Sections 5.x-1.2/6.x-1.2 - HTML Injection            | exploits/php/webapps/33410.txt
------------------------------------------------------------------- -------------------------------------------------------------------
Shellcodes: No Result
$

なるほど。`ls`の時にも見えたpathは実際のコードが入っている場所か。セキュリティ界隈の人には便利なのかな。

以上。

複数のcount()の結果を四則演算

SQLにおいて表題のことをやりたかった。

■ 環境

  • Amazon Athena

■ count()

単純に”count()“の結果を計算するのであれば特に問題なくできるのだが、1つのクエリで複数の”count()“を実行し、その結果を使って四則演算したかった。

SELECT
  regist_date,
  count(1) as total,
  count(column1 < 10 or null) as count1, count(column1 >= 10 or null) as count2
FROM testtable
GROUP BY regist_date

以前使用した上記のSQLであれば、下記のようなことを行いたい。

count1 + count2

これを一度のクエリでは書けないので下記のようにすれば一応実行はできる。

SELECT regist_date, total, count1 + count2 as count3
FROM (
  SELECT
    regist_date,
    count(1) as total,
    count(column1 < 10 or null) as count1, count(column1 >= 10 or null) as count2
  FROM testtable
  GROUP BY regist_date
)

まぁ確かにできるのだがもっとスマートな書き方はないのかな。

以上。

■ 関連

複数条件のcount()

vim nowrap

表題の通り。たまに忘れるのでメモ。

■ 環境

  • Vim

■ nowrap

アクセスログ等、1行が長いファイルを`vim`で編集したい時に、改行されて行の全体が見えていると少々不便なこともある。よって改行されない状態でざっと見たい。

:set nowrap

これで思い通りの挙動をしてくれる。

以上。

count(distinct (case when … then … end))

SQLにおいて表題の件。自身はAthenaでとても重宝した。条件に合致した中での一意な数を取得したい。

■ 環境

  • Amazon Athena

■ count(distinct)

Athenaを利用しているので、読み込むデータ量も減らしたいしクエリを実行する対象は減らしたい。なので1回のクエリ実行で必要な情報を得たい。複数の条件で`count()`を取得したいが、これは以前のエントリで述べた通り。今回はさらに条件を絞った状態で`distinct`の値を取得したかった。

SELECT
  regist_date,
  count(1) as total,
  count(column1 < 10 or null) as count1, count(column1 >= 10 or null) as count2,
  count(distinct groupid) as group_count1,
  count(distinct (case when column1 < 10 then groupid end)) as group_count2, count(distinct (case when column1 >= 10 then groupid end)) as group_count3,
FROM testtable
GROUP BY regist_date

上記のようなSQLにすることで1度のクエリ実行で自身が得たいデータは全て取得できるようになった。

group_count1“は全体における”groupid“の`distinct`の値。一意な`groupid`の数を取得できる。

group_count2“は、`column1 < 10`の条件に合致した中での一意な`groupid`の数を取得できる。

group_count3“は…以下略。

以上。

■ 関連

複数条件のcount()