分享一道很有意思的题目
前面好几道题都是sql注入的语句,这边也下意识想着是sql注入,然后测试了很多sql语句发现行不通
就觉得该换个思路
那就扫描下目录吧(我发现dirmap的字典有点拉胯不知道为什么)用dirmap啥都扫不出来于是就换了
dirsearch然后去扫扫出了一个robots.txt
然后就是访问这个地址给你一个下载链接我们直接打开得到
<?php
$flag="";
$password=$_POST['password'];
if(strlen($password)>10){
die("password error");
}
$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
$result=mysqli_query($con,$sql);
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
echo "登陆成功<br>";
echo $flag;
}
}
?>
考验你的代码审计,如果php有没怎么学的建议恶补一下,学一下语法和php的数据库连接PS:(这很重要)
$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
$result=mysqli_query($con,$sql);
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
echo "登陆成功<br>";
echo $flag;
我们主要看这一块,那些mysqli什么的函数如果没用过直接上菜鸟搜函数的作用,下面的函数大概就是如果能成功访问到数据库获得那些行值就能执行while 那也就是说
r
e
s
u
l
t
这
个
值
必
须
是
正
确
的
,
那
我
们
就
来
看
看
result这个值必须是正确的, 那我们就来看看
result这个值必须是正确的,那我们就来看看result
$result=mysqli_query($con,$sql);
和
s
q
l
是
有
关
系
的
也
就
是
sql 是有关系的 也就是
sql是有关系的也就是sql的查询语句要是正确的,那我们接下来看
$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
username这一部分原网页里面就已经帮我填写了 那我们重点来看password这一块
首先了解一下md5这个函数后面有个参数默认是false返回32位的16进制数,而这里是true
菜鸟教程上给出的解释是TRUE - 原始 16 字符二进制格式 大致就是把你这一堆MD5值又弄成字符串了
大家想想前面值为真了那这边如果是 or xxxxx的话不就是恒真了嘛。那就想想有什么字符输进去最后会转成 带 or 的,然后这里我就开始进行强大的搜索引擎了 最后找到篇博客 里面就是这道题,我看了看思路是一致的哈哈(高兴…php)然后那位大佬给出了两个值一个是
129581926211651571912466741651878684928
另一个是
ffifdyop
那这样下次这样的题目如果判断全是数字就用上面,如果判断是字符就用下面顺便给大家看一下php代码执行出来的结果
这边因为
$password=$_POST['password'];
if(strlen($password)>10){
die("password error");
}
有限制长度所以我们使用
ffifdyop
然后就成功啦
这边讲一下sql注入建议大家一定要好好学,尤其是盲注和报错注入那一块。
web8的题目我直接跳了没写,因为要自己写小工具,所以我打算恶补一下python再去写这道题目,因为靠自己一个个盲注来猜解flag值可能会出人命。
sql注入的题目思路,一定要先尝试去判断过滤了什么字符,把所有过滤的字符都列出来再想怎么去绕过!!!!这很重要
另外提供一个盲注过滤逗号的思路
substr(字符串 from 位置for长度)这样就可以不用原先的substr(字符串,位置,长度)了
另外我想问一下大佬们为什么我的dirsearch爆出来的目录是一堆一堆的 我找都得找半天
php,python,kali linux 这三个挺重要的大家一定要学好