前言
今天是个糟糕的一天…昨晚上赶java小项目,结果睡的有点晚,睡了之后,中间醒了一次,看看7点多,继续睡。结果悲剧发生了,一上午的课全旷了,最后还舔着脸去找班主任去要假条,最关键的是老师找我,最后也….下午一个道友发来一个题目,在没课的时候做了一下…以下就是了。
正文
考点
is_numeric
函数绕过
二次注入
题目分析
扫目录扫出个web.zip。
接下来代码审计。
漏洞点在edit_info.php
处
1 |
|
很有意思的是,在common.php
页面存在下面两行代码
1 | extract($_POST,EXTR_SKIP); |
但在edit_info.php
页面是起不了作用的.
继续看is_numeric
函数可以利用十六进制绕过,
并且下面的sql语句中的$role
变量没有被引号包裹,如果取出再拼接到其他语句中便可以形成二次注入。
下面寻找$role
的拼接处…
在info.php
处发现拼接点
1 |
|
先查询后拼接。最后在查询info表info字段…
解题流程
注册
在
register.php
注测一个用户tgao
。登录
在
index.php
登录用户tgao
生成session文件内容
$_session[username]
。更改role
index.php?tem=../edit_info&role=0x27206f722031206c696d697420312c3123
。再次登录用户
tago
页面回显出数据。
最后
坚持下去…