一些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开头的即可

 

 

posted @ 2020-09-03 19:38  Erio  阅读(512)  评论(0编辑  收藏