Я белый, поэтому я начать с весной и осенью легчайшей темы делать, где делать ежедневные заметки! !
Взрывные 1
Blow 2
Blow 3
Взрывные 1
Во-первых, вы можете увидеть кусочек кода,
1, $ _ REQUEST суперглобальный принадлежат PHP, PHP $ _REQUEST используется для сбора представления данных HTML формы,
Смысл здесь, чтобы принять привет получить или по почте представления и присваивается переменной,
2, если условия в соответствии со значением переменной / ^ \ W * $ / матчи регулярных персонажей, а именно ^ матчи начинаются с начала строки, $ конец, \ ш матч любое слово символ, включая подчеркивание,
* Является ли ранее выражала любое количество раз
3, если матч встретить выходы $$ переменных $ а = привет, $$ а = $ привета
4, извлеченные Суперглобальные $GLOBALS
, используемые для обозначения всех переменных , доступных в глобальной роли домена. Это напечатает все переменные , определенные в настоящее время, но и включает в себя переменные в файле,
флаг также существует в этих переменных.
5, а затем передать параметры Здравствуйте, так что привет =GLOBALS,payload为:?hello=GLOBALS
Blow 2
Во-первых, вы можете увидеть некоторые исходный код
Предложил флаг не является переменным, это, вероятно, в комментариях или Echo
Функция var_dump затем объединяется с переменной производительностью типа содержимого переменной, Eval функции в качестве внешнего слоя, содержание переменной описывается, если это команда, которая может быть выполнена,
Конструкция полезной нагрузки :? вводное = file_get_contents ( 'flag.php')
Мы также можем передать слово, а затем использовать меню, чтобы найти флаг соединения,
Blow 3
Первый кусок кода
Здесь требуется и включают в себя в основном то же самом, чтобы вызвать функцию других файлов PHP Заходите, потребуется фатальная ошибка, а затем завершить сценарий
1, сначала создать содержимое сессии, переменный $ _ Sesion используются для хранения информации о сеансе пользователя (сеанс), начальное значение НУМС 0,
время для текущего времени, Whoami Ео. И сессия заканчивается через 120 секунд.
2, или полученные после запроса, чтобы получить значение параметра, а затем сращены в двухбуквенном случайно сгенерированных строки
3, если значение переменной Whoami значение параметра передается первые два, а длина пятого стартового md5 для значения является строкой из 4 == 0,
这时num++,这时whoami的值是随机的那两个字母组成的字符串
4、循环十次然后输出flag
构造payload:
在这里因为md5不能处理数组,md5()这个函数参数如果为数组就会返回false,也就是满足 == 0,
可以利用数组来绕过md5值等于0的条件:?value[0]=e&value[1]=a
然后就是第一个条件,我们可以手动打,在120秒内来十次也就出来啦,也可以写脚本跑
1 import requests
2 url="http://53d7f749ec88496ba93f03712603cc854df8304118f64172.changame.ichunqiu.com/"
3 s = requests.Session()
4 h = s.get(url + '?value[]=ea').text
5 for i in range(10):
6 h=s.get(url + '?value[]=' + h[0:2]).text
7 if 'flag{.*}' in h:
8 break
9 print(h)